鱼C论坛

 找回密码
 立即注册
查看: 2707|回复: 6

[已解决]023讲递归里的迭代实在看不懂

[复制链接]
发表于 2019-1-15 22:48:07 | 显示全部楼层 |阅读模式

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

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

x
23讲里:
def fac(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if n<1:
        print("Error!")
        return -1

    while (n-2)>0:
        n3 = n2 + n1   # 1. 这里是什么意思啊。前面n3, n2, n1前面不是已经定义了=1吗?
        n1 = n2
        n2 = n3
        n -= 1

    return n3

2. n1, n2, n3是指代的元素类似“temp”, "number"这样的还是说用这n1, n2, n3就会跟n相关?
3. 最后要一个n=n-1的目的是什么?

实在云里雾里啊!!!
最佳答案
2019-1-15 23:22:48
samhe10 发表于 2019-1-15 23:12
谢谢您的解答。
1. 要执行一些运算: 这个是执行什么运算呢?
2. n1, n2, n3这些元素前面只是定义了=1.  ...

    while (n-2)>0:
        n3 = n2 + n1   
        n1 = n2
        n2 = n3
        n -= 1

假设n=4,第一次循环:那么n3 = 1+1,n1的值为1,n2 的值为2,n 的值为 3
第二次循环:n3 =2+1,n1的值为2,n2的值为3,n的值为2
循环退出,返回最后的n3的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-15 22:52:58 | 显示全部楼层
n3 = n2 + n1  # 这时n3 = 3
n1= n2  # 这时n1=1
n2=n3  # 这时n2= 3

n-=1 # 使n递减。 100 -1 = 99, 99 -1 =98
把数字代进去走流程就是了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-15 22:56:17 | 显示全部楼层
23讲里:
def fac(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if n<1:
        print("Error!")
        return -1

    while (n-2)>0:
        n3 = n2 + n1   # 1. 这里是什么意思啊。前面n3, n2, n1前面不是已经定义了=1吗?是要执行一些运算,因为最后要返回n3的值
        n1 = n2
        n2 = n3
        n -= 1

    return n3

2. n1, n2, n3是指代的元素类似“temp”, "number"这样的还是说用这n1, n2, n3就会跟n相关?当然有关。因为n的值决定了迭代的次数,会影响最后n3的值
3. 最后要一个n=n-1的目的是什么?为了能退出while循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-15 22:59:05 | 显示全部楼层
ba21 发表于 2019-1-15 22:52
n3 = n2 + n1  # 这时n3 = 3
n1= n2  # 这时n1=1
n2=n3  # 这时n2= 3

还是没看懂,第一个就没看懂。“这里n3=3" 怎么会=3的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-15 23:12:30 | 显示全部楼层
凌九霄 发表于 2019-1-15 22:56
23讲里:
def fac(n):
    n1 = 1

谢谢您的解答。
1. 要执行一些运算: 这个是执行什么运算呢?
2. n1, n2, n3这些元素前面只是定义了=1. 我的意思是函数里只是n未知数,n1, n2, n3这些怎么会知道根据输入的n而各自赋值呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-15 23:22:48 | 显示全部楼层    本楼为最佳答案   
samhe10 发表于 2019-1-15 23:12
谢谢您的解答。
1. 要执行一些运算: 这个是执行什么运算呢?
2. n1, n2, n3这些元素前面只是定义了=1.  ...

    while (n-2)>0:
        n3 = n2 + n1   
        n1 = n2
        n2 = n3
        n -= 1

假设n=4,第一次循环:那么n3 = 1+1,n1的值为1,n2 的值为2,n 的值为 3
第二次循环:n3 =2+1,n1的值为2,n2的值为3,n的值为2
循环退出,返回最后的n3的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-15 23:52:08 | 显示全部楼层
凌九霄 发表于 2019-1-15 23:22
while (n-2)>0:
        n3 = n2 + n1   
        n1 = n2

根据您说的,我在纸上写了一下,大概明白应该是这样的了:
当n=4时,n1=1, n2=1.
根据方程式 n3= n1 + n2, --> n3=1+1=2.
                  而 n1= n2 --> n1=1
                  又n2=n3 --> n2=n3=2
                  再 n-=1 --> n=n-1=4-1=3
这里n-2=3-2>0所以继续循环“当n=3.”
当n=3时,根据以上n1=1, n2=2,n3=2, n=3
根据方程式 n3= n1 + n2, -->n3=1+2=3.
                  而 n1= n2 --> n1=2
                  又n2=n3 --> n2=n3=3
                  再 n-=1 --> n=n-1=3-1=2
这时,n-2=2-2=0了跳出循环,return最后的n3,也就是3.

但是这也太j8难了吧。绕半天才能绕明白。他怎么一下就能写出来这个呢?太难了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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