我遇到过其中一些问题,但从来不知道最好的处理方法。如果我正在编写一个递归函数并建立一个答案,但发现当前答案不起作用,我会返回什么。
例如,如果答案应该是一个 ArrayList,我不能返回 false 说它不起作用。 - 我应该返回一个标记值,如 null 或 -1 并在递归调用中检查它吗? - 或者函数应该只返回 void 并且只有当我确定有答案时我才添加到函数外部的变量 - 或者我应该存储一个额外的参数来保存值,如果它不起作用就忽略它(我不确定如何在我当前的示例中执行此操作) - 或者我应该先有一个函数来检查它是否有效然后执行操作
我目前试图弄清楚的问题类似于计算字符串中的所有排列。不同之处在于,排列中连续的两个字符的排列在字母表中不能连续,并且顺序相同。例如,“bc”是不允许的。 “cb”没问题。 不确定这是否是我的问题的一个很好的例子,但如果不是,我的问题仍然存在,因为我总是对处理回溯递归感到不舒服。
最佳答案
是的,通常的做法是返回一个预定义的值(例如 -1,或者一些您无法从函数的正常操作中获得的常量)。或者,您可以引发异常,然后在递归调用中也捕获它。
关于string - 递归+回溯。返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14867731/