C中的修改斐波那契

Vasu_candy

我需要生成修改后的斐波那契数列,并且它必须是完全动态的。这里给出f0和f1,即在生成序列后f0 = 1和f1 = 3。我应该在特定索引处打印结果值。

例如:f0 = 1,f1 = 3,testcase(n)= 3(这不能更改为特定值)

t1 = 4 t2 = 8 t3 = 11依此类推。通过使用f [i] = f [i-1] + f [i-2]将当前元素和上一个元素相加,应为11个元素生成序列

它可以表示为:

0=>1
1=>3
2=>4
3=>7
4=>11
5=>18
6=>29
7=>47
8=>76
9=>123
10=>199
11=>322

我应该在索引4,8和11(必须是程序的输出)上打印这些值,即11 76 322

输入格式:

f0,f1和n(其中n是索引编号)

其中ti = [t1,t2,.... tn-1](指定R-Fibonacci系列的索引)。

输出格式:根据给定的索引打印R-斐波那契数列的值。

样本输入:1 3 3 4 8 11

样本输出:11 76 322

我有为上述程序生成斐波那契数列的代码,但我想在4,8,11索引处显示该值。这是代码:

int fib(int n)
{
    int f[n+1];
    int i;
    f[0]=1;
    f[1]=3;
    for(i=2;i<=n;i++)
    {
       f[i]=f[i-1]+f[i-2];
    }
    return f[n];
}

int main()
{
   int n=11
   printf("%d ",fib(n));
   getchar();
   return 0;
}
风向标

像这样?数组在其中定义,main并作为参数传递给函数。该函数填充数组,不返回任何内容,然后main可以打印所需的元素。

您将需要一个循环来执行此操作,并使用另一个动态数组保存要求您打印的索引。

#include <stdio.h>

void fib(int n, int *f)
{
    int i;
    f[0] = 1;
    f[1] = 3;
    for(i = 2; i <= n; i++)
    {
       f[i] = f[i-1] + f[i-2];
    }
}

int main()
{
   int n = 11;
   int f[n+1];
   fib(n, f);
   printf("%d ", f[8]);
   printf("%d ", f[11]);
   printf("\n");
   getchar();
   return 0;
}

程序输出:

76 322

我将为您留下一些要编写的代码,但假设您对所需的索引值进行了动态排列,例如

int index[m];
index[0] = 4;
index[1] = 8;
index[2] = 11;

您可以使用以下方式打印系列字词:

printf("%d ", f[ index[i] ]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章