查看“Python函数的递归”的源代码
←
Python函数的递归
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==递归的定义== ===递归的定义=== 编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。 在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。 例题:求n的阶乘 n的阶乘有两种定义方法: *n!=1×2×3×...×(n-1)×n。 *阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n *这种函数在运行过程中反复调用它本身的情况,就叫做递归。 *[[文件:p5-3.png|500px]] *[[文件:p4-7.png]] *例1:阶乘的计算 <nowiki>def factorial(num): if num == 0: return 1 else: return num * factorial(num-1) n = eval(input("请输入一个整数: ")) print(factorial(abs(int(n))))</nowiki> *例2: 字符串反转 <nowiki>def reverse(s): if s == "": return s else: return reverse(s[1:]) + s[0] str = input("请输入一个字符串: ") print(reverse(str))</nowiki> *例3:使用递归,求斐波那契数列 <nowiki># Filename : test.py # author by : www.runoob.com def recur_fibo(n): """递归函数 输出斐波那契数列""" if n <= 1: return n else: return(recur_fibo(n-1) + recur_fibo(n-2)) # 获取用户输入 nterms = int(input("您要输出几项? ")) # 检查输入的数字是否正确 if nterms <= 0: print("输入正数") else: print("斐波那契数列:") for i in range(nterms): print(recur_fibo(i))</nowiki> *非递归方式求解: <nowiki>a=0 b=1 while b < 1000: print(b,end=',')#end 可以将print输出到同一行并以 ,号结尾 a, b = b, a+b; </nowiki> *问题解决:使用递归法对整数进行因数分解。 <nowiki>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)</nowiki> 返回 [[Python函数和代码复用]]
返回至
Python函数的递归
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息