我用C编写了这段代码来计算Fibonacci序列的黄金比例,但程序在屏幕上没有输出任何内容.我无法理解我的逻辑出了什么问题.
你能解释一下吗?
任何形式的帮助将不胜感激.
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; }
ouah.. 7
你在这里执行整数除法:
phi = fibonacci(n)/fibonacci(n-1);
(作为fibonnacci
返回a int
),要使浮点除法将语句更改为:
phi = fibonacci(n) / (double) fibonacci(n-1);
而且,你必须开始你的循环i = 2
,即,
for (i=2;;i++){
代替:
for (i=1;;i++){
就像fibonacci_golden_ratio(i-1)
计算一样phi = fibonacci(0) / (double) fibonacci(-1);
你在这里执行整数除法:
phi = fibonacci(n)/fibonacci(n-1);
(作为fibonnacci
返回a int
),要使浮点除法将语句更改为:
phi = fibonacci(n) / (double) fibonacci(n-1);
而且,你必须开始你的循环i = 2
,即,
for (i=2;;i++){
代替:
for (i=1;;i++){
就像fibonacci_golden_ratio(i-1)
计算一样phi = fibonacci(0) / (double) fibonacci(-1);