这在C语言中给出了斐波那契序列的前15个,但我必须手动编写每个序列,我如何使它增加2个变量而不是无穷无尽的变量?这在c++和Python中要容易得多,不知道为什么我不能在C中弄清楚。
#include <stdio.h>
int i;
int main()
{
int var = 1;
int var1 = 1;
int var2 = var+var1;
printf("%dn", var2);
int var3 = var2+var1;
printf("%dn", var3);
int var4 = var3+var2;
printf("%dn", var4);
int var5 = var4+var3;
printf("%dn", var5);
int var6 = var5+var4;
printf("%dn", var6);
int var7 = var6+var5;
printf("%dn", var7);
int var8 = var7+var6;
printf("%dn", var8);
int var9 = var8+var7;
printf("%dn", var9);
int var10 = var9+var8;
printf("%dn", var10);
int var11 = var10+var9;
printf("%dn", var11);
int var12 = var11+var10;
printf("%dn", var12);
int var13 = var12+var11;
printf("%dn", var13);
int var14 = var13+var12;
printf("%dn", var14);
int var15 = var14+var13;
printf("%dn", var15);
int var16 = var15+var14;
printf("%dn", var16);
int var17 = var16+var15;
printf("%dn", var17);
int var18 = var17+var16;
printf("%dn", var18);
int var19 = var18+var17;
printf("%dn", var19);
}
输出:23.5813213455891442333776109871597258441816765
你的问题缺少关键细节。我猜你正在寻找类似Python的(x,y)=(y,x+y)
的东西。
>>> prev=3
>>> next=8
>>> (prev,next)=(next,prev+next)
>>> prev
8
>>> next
11
>>>
,
(prev,next)=(next,prev+next)
基本上等同于
tmp1 = next
tmp2 = prev+next
prev = tmp1
next = tmp2
我们可以交换最后两个赋值而不破坏任何东西。
tmp1 = next
tmp2 = prev+next
next = tmp2
prev = tmp1
这个可以简化。
this = next
next += prev
prev = this
这正是你在这里需要使用的。
int n = 10;
if ( n > 0 ) {
int prev = 0;
printf( "%dn", prev );
int next = 1;
for ( int i=1; i<n; ++i ) {
int this = next;
printf( "%dn", this );
next += prev;
prev = this;
}
}
0
1
1
2
3
5
8
13
21
34
编译器资源管理器演示
注意,我们可以伪造起始值(1,0而不是0,1)来简化逻辑。
int n = 10;
int prev = 1;
int next = 0;
for ( int i=1; i<n; ++i ) {
int this = next;
printf( "%dn", this );
next += prev;
prev = this;
}
编译器资源管理器演示
没关系,我只是花了一点时间才弄明白,对不起。
# include & lt; stdio.h>
int var = 1;
int var1 = 2;
int main()
{
while (var<100)
{
var+=var1;
var1+= var;
printf("%dn", var);
}
}