C 中修正的斐波那契数列
Modified Fibonacci in C
我需要生成一个修改后的斐波那契数列,它必须是完全动态的。这里会给出f0和f1,即生成序列后f0=1和f1=3。我应该在特定索引处打印结果值。
例如:f0 = 1,f1 = 3,testcase(n) = 3(这不能更改特定值)
t1 = 4 t2 = 8 t3 = 11 等等。应该为 11 个元素生成系列,方法是使用以下方法添加当前元素和前一个元素:f[i] = f[i-1] + f[i-2]
可以表示为:
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;
}
如果我没理解错的话,这个问题确实与斐波那契数列无关,而是关于 C 中的作用域。您在函数中声明和定义一个数组,fib
,并在该函数中填充它 (并返回单个元素值)。你想要的是从调用者那里访问整个数组。
一种直接的方法是在调用方法中声明数组,并将指向它的指针传递给 fib
函数:
#include <stdio.h>
int fib(int f[], int n)
{
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;
int f[12];
fib(f, n);
printf("%d ", f[4]);
printf("%d ", f[8]);
printf("%d ", f[11]);
getchar();
return 0;
}
像这样?该数组在 main
中定义并作为参数传递给函数。函数填充数组,returns什么都没有,然后在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] ]);
这是使用递归算法生成一组小于给定数 N 的斐波那契数的代码:
#include<stdio.h>
int fibo(int n)
{
if(n<2)
return n;
else
return (fibo(n-1)+fibo(n-2));
}
void main()
{
int n,i;
printf("\n Enter number : ");
scanf("%d",&n);
printf("\n Fibonacci series is : ");
for(i=0;i<n;i++)
printf("\n %d",fibo(i));
}
我需要生成一个修改后的斐波那契数列,它必须是完全动态的。这里会给出f0和f1,即生成序列后f0=1和f1=3。我应该在特定索引处打印结果值。
例如:f0 = 1,f1 = 3,testcase(n) = 3(这不能更改特定值)
t1 = 4 t2 = 8 t3 = 11 等等。应该为 11 个元素生成系列,方法是使用以下方法添加当前元素和前一个元素:f[i] = f[i-1] + f[i-2]
可以表示为:
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;
}
如果我没理解错的话,这个问题确实与斐波那契数列无关,而是关于 C 中的作用域。您在函数中声明和定义一个数组,fib
,并在该函数中填充它 (并返回单个元素值)。你想要的是从调用者那里访问整个数组。
一种直接的方法是在调用方法中声明数组,并将指向它的指针传递给 fib
函数:
#include <stdio.h>
int fib(int f[], int n)
{
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;
int f[12];
fib(f, n);
printf("%d ", f[4]);
printf("%d ", f[8]);
printf("%d ", f[11]);
getchar();
return 0;
}
像这样?该数组在 main
中定义并作为参数传递给函数。函数填充数组,returns什么都没有,然后在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] ]);
这是使用递归算法生成一组小于给定数 N 的斐波那契数的代码:
#include<stdio.h>
int fibo(int n)
{
if(n<2)
return n;
else
return (fibo(n-1)+fibo(n-2));
}
void main()
{
int n,i;
printf("\n Enter number : ");
scanf("%d",&n);
printf("\n Fibonacci series is : ");
for(i=0;i<n;i++)
printf("\n %d",fibo(i));
}