计算斐波那契数列从第3项开始后,每一项的值就是前两项的和。用两个变量来储存最近产生的值。计算完后需要更新这两个变量的值。
输入正整数n(1<=n<=46),输出斐波那契数列的前n项,每行输出5个
//斐波那契数列
/*斐波那契数列的前n项:1,1,2,3,5,8,13,…,每行输出5个
Fibonacci数列就是满足任一项数字是前两项的和
(最开始两项均定义为1)的数列 */
#include <stdio.h>
int main (void)
{
int x1,x2;
int x,n,i;
printf("Enter n:");
scanf("%d",&n);
if(n<1||n>46){
printf("Invalid.\n");
}else if(n==1){
printf("%10d",1); //先输出第一项
}else {
x1=1;
x2=1;
printf("%10d%10d",x1,x2);
for (i=3;i<=n;i++){
x=x1+x2;
printf("%10d",x);
if(i%5==0){ //若i为5的倍数则换行
printf("\n");
}
x1=x2; //更新x1和x2,为下次准备
x2=x;
}
}
return 0;
}
测试用例
Enter n:10
1 1 2 3 5
8 13 21 34 55
迭代法也称辗转法,不断从变量的旧值推出新值的过程