|

楼主 |
发表于 2016-10-20 20:34:57
|
显示全部楼层
本帖最后由 changhaitian 于 2016-10-20 20:36 编辑
谢谢你的细心解答,根据你的解答,我把思路重新整理了一遍。
作为初学者,我觉得搞清楚基本的概念非常重要,比如说迭代的概念,函数的赋值方法。
其实递归也是循环的一种,不过更强调的是对函数本身的调用?
第十七课 方法一,求最大公约数:
def gcd(x,y):
while y:(在y循环中)
t = x%y (t是x除以y的余数)
x = y (把y的值赋予x)
y = t (把余数t的值赋予y)
当 x = 4, y = 6时:
进入y循环,
t = x%y = 4
x = y = 6
y = t = 4
再进入y循环,现在x = 6,y = 4:
t = x%y = 2
x = y = 4
y = t = 2
又再次进入y循环,x = 4 ,y =2
t = x%y = 0
x = y = 2
y = t = 0
因为 y = 0 为 false,循环终止
return x (取第三次循环y 的值2)
所以,(x,y)的最大公约数为 2
第十九课 方法二: 递归的思想
递归满足两个条件: 1、函数自己调用自己。2有正确的结束的条件。
def gcd(x,y):
if y:(如果y != 0)
return gcd (y,x%y) 返回,让 x = y,且 y = x%y (y取值x%y的余数)
相当于, t = x%y,x = y, y =t
else:(如果 y ==0)
return x (返回最后一次阶乘中x的值,x就是原两数的最大公约数)
|
|