023讲递归里的迭代实在看不懂
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的目的是什么?
实在云里雾里啊!!! n3 = n2 + n1# 这时n3 = 3
n1= n2# 这时n1=1
n2=n3# 这时n2= 3
n-=1 # 使n递减。 100 -1 = 99, 99 -1 =98
把数字代进去走流程就是了。
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循环。 ba21 发表于 2019-1-15 22:52
n3 = n2 + n1# 这时n3 = 3
n1= n2# 这时n1=1
n2=n3# 这时n2= 3
{:5_107:}还是没看懂,第一个就没看懂。“这里n3=3" 怎么会=3的? 凌九霄 发表于 2019-1-15 22:56
23讲里:
def fac(n):
n1 = 1
谢谢您的解答。
1. 要执行一些运算: 这个是执行什么运算呢?
2. n1, n2, n3这些元素前面只是定义了=1. 我的意思是函数里只是n未知数,n1, n2, n3这些怎么会知道根据输入的n而各自赋值呢? 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的值
凌九霄 发表于 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难了吧。绕半天才能绕明白。他怎么一下就能写出来这个呢?太难了!
页:
[1]