我不知道为什么,我的代码运行不出东西,也不报错,就是一片空白,求指点
#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;
}
用递归和非递归分别实现第n个斐波那契数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- GISer Liu 2024-03-22 08:52关注
该回答引用自GPT-3.5,由博主GISer Liu编写:
问题分析:
- 给出的代码主要实现了两个函数:
app()
用于计算第n个斐波那契数,main()
函数用于接收用户输入的n并输出对应的斐波那契数。 - 在
app()
函数中使用了数组来存储斐波那契数列的前两项,然后通过循环计算得到第n个斐波那契数。 - 在
main()
函数中,首先接收用户输入的n,然后调用app()
函数计算第n个斐波那契数,并输出。
解决方案: - 代码中存在一些语法错误和逻辑错误,需要修正。
- 首先,要修改
main()
函数中sum=app(n);
这一行,将分号;
改为等号=
,因为分号会导致语法错误,应该是赋值操作。 - 其次,需要调整
app()
函数的返回值。由于app()
函数返回的是第n+2项的值,而不是第n项,所以应该修改返回值为a[x]
而不是a[i+2]
。 - 最后,要注意数组越界的问题。在
app()
函数中,数组a
的大小应该至少为x+1
,而不是2,以防止数组越界。
修改后的代码如下:
cCopy code
这样修改后的代码应该可以正确地计算出第n个斐波那契数,并输出结果。#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; }
如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用 - 给出的代码主要实现了两个函数:
悬赏问题
- ¥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画图时的撤销编程