这个递归函数有什么作用?

zen*_*ngr 2 recursion fibonacci

我在接受采访时得到了这个问题.所以,在我看来,这是一个混乱的斐波纳契seq.sum生成器,这给出了stackoverflow.因为if(n==0) should be if(n<3)(退出条件错误).这个问题的确切答案应该是什么?期待什么作为答案?

foo (int n) {
if (n == 0) return 1;
return foo(n-1) + foo(n-2);
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

这个递归函数有什么作用?

当你看到这三行代码时,你会推断出什么?没有调试.

Jon*_*eet 5

是的,它只是一个带有不正确基本情况的递归Fibonacci方法(虽然我认为我不会使用n < 3它......这取决于你如何定义它).

至于"预期的答案" - 这将取决于问题.您是否在帖子标题中准确提出了问题?如果是这样,那么答案就是"它会永远地递归,直到它将你的任何值传递给0以外的任何值时 - "当然还有一个解释.(它永远不会结束,因为无论是 n-1个不为0,或 n-2个不为0,或两者.)

编辑:以上回答第一个问题.回答"当你看到这3行代码时你会推断出什么" - 我推断有问题的开发人员从未使用0以外的值运行代码,或者不关心代码是否有效.