“Python函数的递归”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“*函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足…”)
 
第1行: 第1行:
 
*函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足的时候就不再调用了,然后再一层一层地返回直到该函数第一次调用的位置。
 
*函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足的时候就不再调用了,然后再一层一层地返回直到该函数第一次调用的位置。
*[[文件:p4-3.png]]
+
*[[文件:p4-7.png]]
 
*问题解决:使用递归法对整数进行因数分解。
 
*问题解决:使用递归法对整数进行因数分解。
 
  <nowiki>from random import randint
 
  <nowiki>from random import randint

2018年2月16日 (五) 23:46的版本

  • 函数的递归调用是函数调用的一种特殊情况,函数调用自己,自己再调用自己,自己再调用自己,...,当某个条件得到满足的时候就不再调用了,然后再一层一层地返回直到该函数第一次调用的位置。
  • P4-7.png
  • 问题解决:使用递归法对整数进行因数分解。
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)

返回 Python函数和代码复用