C中的黄金比例?
发布时间:2020-12-16 10:00:49 所属栏目:百科 来源:网络整理
导读:我用C编写了这段代码来计算Fibonacci序列的黄金比例,但程序在屏幕上没有输出任何内容.我无法理解我的逻辑出了什么问题. 你能解释一下吗? 任何形式的帮助将不胜感激. int fibonacci (int n){ if (n==0 || n==1) return n; else return fibonacci(n-1)+fibona
我用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 = %.5lfn",fibonacci_golden_ratio(i)); return 0; } 解决方法
你在这里执行整数除法:
phi = fibonacci(n)/fibonacci(n-1); (因为fibonnacci返回一个int),要使浮点除法将语句更改为: phi = fibonacci(n) / (double) fibonacci(n-1); 而且,你必须以i = 2开始你的循环,即 for (i=2;;i++){ 代替: for (i=1;;i++){ as fibonacci_golden_ratio(i-1)将计算phi = fibonacci(0)/(double)fibonacci(-1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |