赞
踩
1、函数调用
def fun():
print(1)
print(fun) #fun是函数名,打印fun就是打印函数对象的地址
print(fun()) #fun()是调用函数,打印fun()就是打印fun()的返回值
结果:

2、递归函数
递归函数的两个条件:
(1)递归条件:将问题继续分解的条件;
(2)基线条件:问题可以被分解为最小的问题。
当满足基线条件的时候,再取解决问题(设定的最大递归深度)
例1:
自定义函数,求n的阶乘。
推到过程:
10!=109!
9!=98!
…
2!=2*1!
1!=1
所以:
def fun(n):
#基线条件:
if n==1:
return 1
#递归条件:
return n*fun(n-1)
print(fun(10))
结果:

例2:
自定义函数,求任意数的任意次幂运算。
推导过程:
n**m
10^5=10x104
10^4=10x103
…
10^2=10x10**1
10^1=10
所以:
def fun(m,n):
#基线条件:
if n==1:
return m
#递归条件:
return m*fun(m,n-1)
print(fun(10,5))
结果:

例3:
自定义函数,判断字符串是否是回文字符。
推导过程:
'abcdefghgfedcba’
‘bcdefghgfedcb’
…
‘h’
所以:
def fun(s):
#基线条件:
if len(s)<2:
return True
elif s[0]!=s[-1]:
return False
#递归条件:
return fun(s[1:-1])
print(fun('abcdefghgfedcba'))
结果:

例4:猴子吃桃问题
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少桃子?
推导过程:
第10天 : 1
第9天: (1+1)*2
第8天: ((1+1)*2 + 1) *2
def monkey(n): # n天前一共摘了多少桃子
if n == 1:
return 1
return (monkey(n-1) + 1) * 2
num = monkey(10)
print(num)
结果:


Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。