如果下面的代码有问题,有人可以告诉我吗...在一个问题中,我被问到以下斐波纳契数函数是否有问题.
int fib(int n)
{
if (n <= 1) return n;
return fib (n-1) + fib(n-2);
}
Run Code Online (Sandbox Code Playgroud)
其中n是0 ... 100
所以我的回答是什么,因为我看不到任何明显的东西.语法似乎很好,逻辑上这是计算斐波那契数.我在做出这个假设时是否正确?
这取决于您询问的问题类型.我在这里看到两个问题:
int类型不能保持范围[0,100]内的所有斐波纳契数这是在Python中使用迭代的fib实现的一个例子(仅仅因为它可以保持fib(100)开箱即用):
In [16]: def fib(n):
....: curr, next = 0, 1
....: for x in range(n):
....: curr, next = next, curr
....: next += curr
....: return curr
....:
In [17]: fib(100)
Out[17]: 354224848179261915075L
Run Code Online (Sandbox Code Playgroud)