“Python函数的递归”的版本间的差异
来自CloudWiki
(创建页面,内容为“*函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足…”) |
|||
第1行: | 第1行: | ||
*函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足的时候就不再调用了,然后再一层一层地返回直到该函数第一次调用的位置。 | *函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足的时候就不再调用了,然后再一层一层地返回直到该函数第一次调用的位置。 | ||
− | *[[文件:p4- | + | *[[文件:p4-7.png]] |
*问题解决:使用递归法对整数进行因数分解。 | *问题解决:使用递归法对整数进行因数分解。 | ||
<nowiki>from random import randint | <nowiki>from random import randint |
2018年2月16日 (五) 23:46的版本
- 函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足的时候就不再调用了,然后再一层一层地返回直到该函数第一次调用的位置。
- 问题解决:使用递归法对整数进行因数分解。
from random import randint def factors(num, fac=[]): #每次都从2开始查找因数 for i in range(2, int(num**0.5)+1): #找到一个因数 if num%i == 0: fac.append(i) #对商继续分解,重复这个过程 factors(num//i, fac) #注意,这个break非常重要 break else: #不可分解了,自身也是个因数 fac.append(num) facs = [] n = randint(2, 10**8) factors(n, facs) result = '*'.join(map(str, facs)) if n==eval(result): print(n, '= '+result)