唔西迪西 红柿 2023-02-19 00:02 采纳率: 42.9%
浏览 29
已结题

斐波拉切数列,累加的思想

就是我想要求第k项的总和,累加思想不对呀?请问一下是我逻辑哪里出错了吗?

img

  • 写回答

3条回答 默认 最新

  • a5156520 2023-02-19 11:22
    关注

    应该是第220和第221行代码那里,第k项的斐波那契值与前第一项斐波那契的值的使用了同一个变量,所以计算出现了错误,可以再使用一个变量存储第k项斐波那契的值;

    然后前第1项和第2项斐波那契的的值仍使用f1和f2来单独存储,从而让程序思路更简洁一点;

    再针对第1项和第2项的特殊情况可以使用if-else if语句来专门处理;

    另外,如果需要计算比较大的斐波那契值,可以把各变量的数据类型改为long 或long long int,甚至double类型也是可以的。

    修改如下:

    参考链接:


    #include <stdio.h>
    
    int main(void){
        
        int f1,f2,sum=0,k;
        f1=1; //第一项斐波那契的值 
        f2=1;  //第二项斐波那契的值 
        int fn;  //第n项斐波那契的值 
        scanf("%d",&k);
        
        // https://blog.csdn.net/pyh2358/article/details/105977440
        // https://www.lddgo.net/math/fibonacci
        if(k==1){  //1项 
        
            fn=f1; // 第一项斐波那契的值 
            sum+=f1; //累加第一项斐波那契的值 
            printf("第%d项位为%d,前%d项的和为%d\n",k,fn,k,sum);
            
        }else if(k==2){  //2项 
        
            fn=f2;  //第二项斐波那契的值 
            sum+=f1; //累加第一项 
            sum+=f2;  //累加第二项 
            printf("第%d项位为%d,前%d项的和为%d\n",k,fn,k,sum);
            
        }else{  //3项以上 
            
            sum+=f1+f2; //3项以上的和,先累加前两项的和 
            for(int i=3;i<=k;i++){
                
                fn=f1+f2;  // 当前项数列的值为前两项的和    
                sum+=fn;  // 累加当前项 
                
                // f1 f2 fn
                f1=f2;  //前第1项f1的值赋值为第2项 
                f2=fn;  //前第2项f2的值赋值为当前项fn的值,以便为下一项的值作计算准备 
                
            }
            printf("第%d项位为%d,前%d项的和为%d\n",k,fn,k,sum);
        }
        
        
        return 0;
    } 
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月19日

悬赏问题

  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊