强壮的田螺 2023-04-15 18:19 采纳率: 86.4%
浏览 9
已结题

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


#include<stdio.h>

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();
    }
  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-15 18:30
    关注

    基于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;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 已采纳回答 4月15日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥15 小红薯封设备能解决的来
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'
  • ¥15 vue+element项目中多tag时,切换Tab时iframe套第三方html页面需要实现不刷新
  • ¥50 深度强化学习解决能源调度问题
  • ¥15 一道计算机组成原理问题