【发布时间】:2015-12-19 18:01:57
【问题描述】:
我用 C 语言编写了这段代码来计算斐波那契数列的黄金比例,但程序在屏幕上什么也没输出。我无法理解我的逻辑出了什么问题。
你能解释一下吗?
我们将不胜感激任何形式的帮助。
int fibonacci (int n){
if (n==0 || n==1)
return n;
else
return fibonacci(n-1)+fibonacci(n-2);
}
double fibonacci_golden_ratio(int n){
double phi;
phi = fibonacci(n)/fibonacci(n-1);
return phi;
}
int main(){
int i;
for (i=1;;i++){
printf ("F = %d ",fibonacci(i));
printf ("phi = %.5lf \n", fibonacci_golden_ratio(i));
if ( fabs (fibonacci_golden_ratio(i) - fibonacci_golden_ratio(i-1)) < 0.0001 )
break;
}
printf ("phi = %.5lf\n", fibonacci_golden_ratio(i));
return 0;
}
【问题讨论】:
-
什么都不输出是什么意思?
-
它只编译和写入 F=1
-
尝试添加一个全局
count变量,在每次调用fibonacci时将其递增,并打印其最终值。当我运行它时,我收到了 11438 个电话。如果您记住较低的值,则可以非常有效地计算斐波那契数;您重复地重新计算它们,然后在fibonacci_golden_ratio中调用fibonnaci()两次,然后在循环的每次迭代中调用fibonacci_golden_ratio四次。它有效,但效率可能会很多。