递归 满足递归的2个条件:定义函数时,调用自己. 要有一个正确的停止条件. 出来混一定要还才是递归.
例子:
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
number=int(input('请输入一个正整数:'))
result=factorial(number)
print('%d 的阶乘是: %d' % (number,result))
迭代实现斐波拉契数列
def abc(n):
n1=1
n2=1
n3=1
if n<1:
print('输入错误!')
return -1
while (n-2)>0:
n3=n2+n1
n1=n2
n2=n3
n-=1
return n3
result=abc(20)
if result!=-1:
print('总共有%d对小兔子诞生!' % result)
递归实现斐波拉契数列
def fab(n):
if n<1:
print('输入错误!')
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result=fab(20)
if result!=-1:
print('总共有%d对小兔子诞生!' % result)
PS:递归运算次数太多并不如迭代好用
汉诺塔 #原理懂了,但是这里代码是如何print出X -->Y这些有疑问
def hannot(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
hannot(n-1,x,z,y) #将N-1个盘子从X移动到Y上
print(x,'-->',z) #将最底下的盘子移动到Z上
hannot(n-1,y,x,z) #将Y上的N-1个盘子移动到Z上
n=int(input('请输入汉诺塔的层数:'))
hannot(n,'x','y','z')