鱼C论坛

 找回密码
 立即注册
查看: 983|回复: 1

[已解决]qzyx

[复制链接]
发表于 2023-11-16 19:45:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函数接口定义:
int f( int n );
函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。

裁判测试程序样例:
#include <stdio.h>

int f( int n );

int main()
{
    int n;
   
    scanf("%d", &n);
    printf("%d\n", f(n));
   
    return 0;
}

/* 你的代码将被嵌在这里 */
输入样例:
6
输出样例:
8


我的代码哪里错了
int f( int n )
{
    int arr[1024];
  
    arr[0]=arr[1]=0;
    if(n==2||n==1)
    {
        return 1;
    }
    else{
          int i;
    for( i=2;i<=n;i++)
    {
        arr[i]=arr[i-1]+arr[i-2];
    }
    return arr[i-1];
}
}
最佳答案
2023-11-16 19:45:41
int f(int n)
{
    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        int a = 0, b = 1, c;
        for (int i = 2; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
}

这段代码中存在几个问题:
1. 数组  arr  的大小应该根据  n  动态分配,而不是固定为 1024。这种固定大小的数组可能会导致内存溢出。
2. 在  arr  数组中, arr[0]  和  arr[1]  被初始化为 0,但实际上 Fibonacci 数列的定义是从 0 和 1 开始的。
3. 在循环中, return arr[i-1]  的位置不正确,导致返回的结果不正确。

我提供的修正后的代码中,使用了两个变量  a  和  b  来保存 Fibonacci 数列中的前两个数,然后通过循环计算第  n  个 Fibonacci 数。这样可以避免使用数组,提高了效率。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-16 19:45:41 | 显示全部楼层    本楼为最佳答案   
int f(int n)
{
    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        int a = 0, b = 1, c;
        for (int i = 2; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
}

这段代码中存在几个问题:
1. 数组  arr  的大小应该根据  n  动态分配,而不是固定为 1024。这种固定大小的数组可能会导致内存溢出。
2. 在  arr  数组中, arr[0]  和  arr[1]  被初始化为 0,但实际上 Fibonacci 数列的定义是从 0 和 1 开始的。
3. 在循环中, return arr[i-1]  的位置不正确,导致返回的结果不正确。

我提供的修正后的代码中,使用了两个变量  a  和  b  来保存 Fibonacci 数列中的前两个数,然后通过循环计算第  n  个 Fibonacci 数。这样可以避免使用数组,提高了效率。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表