def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1) #n*(n-1)*n(n-2)......
res = factorial(3)
print(res) #6
#公式:n!或者n*(n-1)*(n-2)......
或
def factorial(n):
if n == 1: #当n为1时,return 1,函数终止
return 1 #函数中有return,就不会再执行return后面的代码
return n * factorial(n-1) #n*(n-1)*n(n-2)......
res = factorial(3)
print(res) #6
汉诺塔
defhannt(n,x,y,z):if n ==1:print(x,'--->',z)else:
hannt(n-1,x,z,y)# x ---> y,所以这里将 y,z 位置互换print(x,'--->',z)
hannt(n-1,y,x,z)# y ---> z,所以这里将 x,y 位置互换
回调函数(所谓的)
函数作为参数进行处理
def add(a,b):
return a + b
def test(a,b,func):
print(a,b,func)
return func(a,b) if callable(func) else print('{}不是函数'.format(func))
print(test(100,300,add)) #传入的第三个参数add对应上面的函数
test(200,200,111)
#100 300 <function add at 0x7f611ea06e18>
400
200 200 111
111不是函数