while用法举例2(求斐波拉契数列第n项的值)

作者在 2011-08-17 16:46:30 发布以下内容
/*
时间:2011年8月17日16:44:54
功能:键盘输入一个自然数n,输出斐波拉契数列第n项的值
目的:练习while循环的用法
注释:斐波拉契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…… 通项公式为F(0) = 0,F(1)=1,F(n)=F(n-1)+F(n-2) (n≥2),
*/

# include <stdio.h>

int main(void)
{
    int f0 = 0;
    int f1 = 1;
    int f2;
    int n;
    int m;
    
    printf("请任意输入一个自然数,按回车结束\n");
    scanf("%d",&n);
        
    m = n;

    if (n==1)
        printf("斐波拉契数列第1项的值 = %d\n",f1);
    else
    {    
        while (n>=2)
        {
            f2 = f0 + f1;
            f0 = f1;
            f1 = f2;
            --n;
        }
        
        printf("斐波拉契数列第%d项的值 = %d\n", m,f2);
    }
    
    return 0;
}

/*
分别输入1和6
在VC++6.0中的输出结果为:
————————————
请任意输入一个自然数,按回车结束
1
斐波拉契数列第1项的值 = 1
Press any key to continue

请任意输入一个自然数,按回车结束
6
斐波拉契数列第6项的值 = 8
Press any key to continue
————————————

程序执行流程
提示输入一个自然数
输入6,n=6
m=6
判断 6==1为假,选择执行else下的语句
判断 6>=2为真,开始循环
1) f2 = 0+1 = 1
   f0 = 1
   f1 = 1
   n = 6-1 = 5
判断5>=2为真,继续循环
2) f2 = 1+1 = 2
   f0 = 1
   f1 = 2
   n = 5-1 = 4
判断4>=2为真,继续循环
3) f2 = 1+2 = 3
   f0 = 2
   f1 = 3
   n = 4-1 = 3
判断3>=2为真,继续循环
4) f2 = 2+3 = 5
   f0 = 3
   f1 = 5
   n = 3-1 = 2
判断2>=2为真,继续循环
5) f2 = 3+5 = 8
   f0 = 5
   f1 = 8
   n = 2-1 =1
判断1>=2为假,循环结束
输出斐波拉契数列第6项的值 = 8(此时m=6,f2=8)

*/
郝斌视频笔记 | 阅读 2412 次
文章评论,共1条
贾文慧
2011-08-19 12:24
1
为了骗积分,赞一个
游客请输入验证码
最新评论