当前位置:  开发笔记 > 编程语言 > 正文

C中的黄金比例?

如何解决《C中的黄金比例?》经验,为你挑选了1个好方法。

我用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);



1> ouah..:

你在这里执行整数除法:

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);

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有