用函数解决斐波那契数我这种思路对吗?


#include

int feibo(int n)
{
    int b,c,d;
    if(n>=2)
    {
    b = 0;
    c = 1;
    d = b+c;
    c = b;
    b = d;
    feibo(n-1);
    }
    
    else
    {
        printf("%d",d);
    }
    
}

    void main(){
    
        int n =3;

        getchar();
    }

基于Monster 组和GPT的调写:

  • 有问题,主要是在feibo()函数中。
  • 先要在feibo()函数的末尾返回一个值。在这里,要返回最终的斐波那契数,而不是只输出结果。要将printf语句移到函数的外面,并将其替换为return d;。
  • 其次在feibo()函数中,每次递归调用时,b和c的值都被重新赋值为0和1。这将导致在后续的递归调用中丢失之前的计算结果。正确的做法是将b和c的值作为参数传递给递归调用的下一次,而不是重新赋值。
  • 最后,在main()函数中,要调用feibo()函数并将其返回值打印出来。

以下是修改后的代码:

#include<stdio.h>

int feibo(int n, int b, int c)
{
    if(n==0)
    {
        return b;
    }
    else if(n==1)
    {
        return c;
    }
    else
    {
        int d = b + c;
        return feibo(n-1, c, d);
    }
}

int main()
{
    int n = 3;
    int result = feibo(n, 0, 1);
    printf("%d", result);
    return 0;
}