2401_83655892 2024-03-18 20:39 采纳率: 25%
浏览 8
已结题

用递归和非递归分别实现第n个斐波那契数

我不知道为什么,我的代码运行不出东西,也不报错,就是一片空白,求指点

#include<stdio.h>

int app(int x)
{
    int i;
    int a[]={1,1};//定义一个数组a[],且数组中的第一和第二个元素都为1,对应斐波那契数列的第一项和第二项 
    for(i=0;i<=x-2;i++)
    {
        a[i+2]=a[i+1]+a[i];//斐波那契数列中第n项为前两项的和 
    
    }
    
    return a[i+2];
}

int main()
{
    //定义 n为第n个斐波那契数的序号, sum为第 n个斐波那契数 
    int n,sum; 
    //输入n 
    scanf("%d\n",&n);
    //调用函数app 
    sum=app(n); 
    printf("%d\n",sum);
    return 0;
} 

  • 写回答

4条回答 默认 最新

  • GISer Liu 2024-03-22 08:52
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    问题分析:

    1. 给出的代码主要实现了两个函数:app()用于计算第n个斐波那契数,main()函数用于接收用户输入的n并输出对应的斐波那契数。
    2. app()函数中使用了数组来存储斐波那契数列的前两项,然后通过循环计算得到第n个斐波那契数。
    3. main()函数中,首先接收用户输入的n,然后调用app()函数计算第n个斐波那契数,并输出。
      解决方案:
    4. 代码中存在一些语法错误和逻辑错误,需要修正。
    5. 首先,要修改main()函数中sum=app(n);这一行,将分号;改为等号=,因为分号会导致语法错误,应该是赋值操作。
    6. 其次,需要调整app()函数的返回值。由于app()函数返回的是第n+2项的值,而不是第n项,所以应该修改返回值为a[x]而不是a[i+2]
    7. 最后,要注意数组越界的问题。在app()函数中,数组a的大小应该至少为x+1,而不是2,以防止数组越界。
      修改后的代码如下:
      cCopy code
      #include <stdio.h>
      int app(int x) {
      int i;
      int a[x + 1]; // 定义数组a[],大小为x+1
      a[0] = 1;
      a[1] = 1; // 数组中的第一和第二个元素都为1,对应斐波那契数列的第一项和第二项
      for (i = 2; i <= x; i++) {
      a[i] = a[i - 1] + a[i - 2]; // 斐波那契数列中第n项为前两项的和
      }
      return a[x]; // 返回第n项的值
      }
      int main() {
      int n, sum;
      // 输入n
      scanf("%d", &n);
      // 调用函数app
      sum = app(n);
      printf("%d\n", sum);
      return 0;
      }
      
      这样修改后的代码应该可以正确地计算出第n个斐波那契数,并输出结果。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

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

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 python的EOFError该怎么解决?
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem
  • ¥15 VB.NET画图时的撤销编程