我不明白为什么我的代码没有显示正确的输出。例如:n=5
的输入应给出输出1 2 3 6 11
,但它给出的输出1 1 0 0 0
。您能建议我的代码进行一些改进吗?
我的代码的工作原理与斐波那契数列相似。而不是添加前2个术语,而是添加前3个术语。
#include <stdio.h>
int main() {
int a=0,b=1,c=0,i,n,s; //To print s=1(first term)
scanf("%d",&n);
for(i=1;i<=n;i++){
s=a+b+c;
printf("%d ",s);//for first time it will print 1.
s=c;//for second term value of s=1 will be pasted in c.
c=b; //for second term value of c=0 will be pasted in b.
b=a; //for second term value of b=1 will be pasted in a.
} //loop will go back to first step and print s=1+0+1=2(second term)
and so on ,3,6,11....
return 0;
}
我希望
n=5
的输出是1,2,3,6,11
但实际输出是
1 1 0 0 0
最佳答案
您分配的值不正确。您还要分配s = c,这是不正确的,因为将来不再使用它。
#include <stdio.h>
int main() {
int a=0,b=1,c=0,i,n,s; //To print s=1(first term)
scanf("%d",&n);
for(i=1;i<=n;i++){
s=a+b+c;
printf("%d ",s);//for first time it will print 1.
// The values you were swapping was in reverse order.
a = b;
b = c;
c = s;
}
return 0;
}
关于c - 如何打印最多n个术语的序列,每个术语=前三个术语的总和,第一个术语= 1,然后2 3 6 11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57074000/