string - 递归+回溯。返回什么?

标签 string algorithm recursion backtracking

我遇到过其中一些问题,但从来不知道最好的处理方法。如果我正在编写一个递归函数并建立一个答案,但发现当前答案不起作用,我会返回什么。

例如,如果答案应该是一个 ArrayList,我不能返回 false 说它不起作用。 - 我应该返回一个标记值,如 null 或 -1 并在递归调用中检查它吗? - 或者函数应该只返回 void 并且只有当我确定有答案时我才添加到函数外部的变量 - 或者我应该存储一个额外的参数来保存值,如果它不起作用就忽略它(我不确定如何在我当前的示例中执行此操作) - 或者我应该先有一个函数来检查它是否有效然后执行操作

我目前试图弄清楚的问题类似于计算字符串中的所有排列。不同之处在于,排列中连续的两个字符的排列在字母表中不能连续,并且顺序相同。例如,“bc”是不允许的。 “cb”没问题。 不确定这是否是我的问题的一个很好的例子,但如果不是,我的问题仍然存在,因为我总是对处理回溯递归感到不舒服。

最佳答案

是的,通常的做法是返回一个预定义的值(例如 -1,或者一些您无法从函数的正常操作中获得的常量)。或者,您可以引发异常,然后在递归调用中也捕获它。

关于string - 递归+回溯。返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14867731/

相关文章:

c# - String.Replace(char, char) 还是 Replace(string, string)?

python - 在 Python 中将 boolean 表达式计算为字符串的更快方法

java - 有人可以向我解释这要我做什么吗?

java - 二叉树搜索小于的值

algorithm - Prolog迷宫求解算法

C - 将反转的文件内容打印到标准输出

c# - 更新特定行的字符串,这样它就不会更新字符串中的重复项?

algorithm - 最接近某个值的公约数的近似值?

node.js - 使用 node.js 从 redis 获取分层数据

sql - 递归查询设计 - Oracle SQL