鱼C论坛

 找回密码
 立即注册
查看: 1839|回复: 4

[已解决]请教while循环的问题

[复制链接]
发表于 2017-10-7 15:05:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# p6_7.py

def fab(n):
    a1 = 1
    a2 = 1
    a3 = 1
    if n < 1:
        print('输入有误!')
        return -1
    while (n -2 ) > 0:
        a3 = a1 + a2
        a1 = a2
        a2 = a3
        n -= 1
    return a3

result = fab(12)
if result != -1:
    print('总共有%d 对小兔崽子诞生!' % result)



请教:我根据数值的变化,推导出假设n为2时,while条件为假,这时跳出循环直接返回a3的原值(a3=1);假设n为3时,a3=a1+a2,即a3=1+1,a3为2;假设n为4时,a3=a1+a2(这个a2为上一轮的a3),即a3=1+2,a3为3;假设n为5时,a3=a1(这个a1为上一轮的a2,也是上上一轮的a3)+a2(上一轮的a3),即a3=2+3,a3为5;以此类推到n为12时,a3为144。
但是while循环是从12开始的,12,11(12-1),10(11-1),。。。一直到2的,第一轮n=12的时候,又哪里来n=11的a1、a2、a3的值的?还是我之前的推导是错误的?请各位大神,不吝赐教,谢谢!!!
最佳答案
2017-10-7 18:05:12
推导并无问题
当进入while循环后,
当n=12的时候,a1,a2及a3的值是从1,1,2
之后n=11,a1,a2,a3的值更新为1,2,3
之后n=10,a1,a2,a3的值更新为2,3,5
...
最后n=2,跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-7 15:51:37 | 显示全部楼层
你这个程序没有问题,只是需要逆向思维去理解:
你要按照循环次数去理解,你的n=12时,相当于菲波那切数列的第三个月
当你的n取大约2的整数时:
n值 --->  斐波那契数列第几项
n        --->     3
n-1     --->     4
n-2     --->     5
......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-7 17:29:29 | 显示全部楼层
foolwolf0068 发表于 2017-10-7 15:51
你这个程序没有问题,只是需要逆向思维去理解:
你要按照循环次数去理解,你的n=12时,相当于菲波那切数列 ...

感觉理解不了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-7 18:05:12 | 显示全部楼层    本楼为最佳答案   
推导并无问题
当进入while循环后,
当n=12的时候,a1,a2及a3的值是从1,1,2
之后n=11,a1,a2,a3的值更新为1,2,3
之后n=10,a1,a2,a3的值更新为2,3,5
...
最后n=2,跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-7 18:26:18 | 显示全部楼层
好像明白了,当n=12的时候,是循环的第1圈,a1,a2及a3的值是从1,1,2
                   之后n=11的时候,是循环的第2圈,a1,a2,a3的值更新为1,2,3
                   之后n=10的时候,是循环的第3圈,a1,a2,a3的值更新为2,3,5
                   以此类推。。。
                    最后n=2,跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 08:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表