函数:调用自身的函数,复杂问题简单化!代码简洁实时点睛
函数recursion,递归递归终会归来!有去有回:调用自身且有返回条件!
def factorial(n): result=n for i in range(1,n): result*=i return result number= int(input('请输入一个正整数:')) result=factorial(number) print('%d的阶乘是%d'%(number,result)) 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 power(x, y): if y: return x * power(x, y - 1) else: return 1 print(power(2, 3))
斐波那契数列(黄金分割比例)
def fab(n): n1=1 n2=1 n3=1 if n<1: print('输入有误!') return -1 while (n-2)>0: n3=n1+n2 n1=n2 n2=n3 n-=1 return n3 result =fab(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)
汉诺塔游戏
def hanoi(n,x,y,z): if n==1: print(x,'-->',z) else: hanoi(n-1,x,z,y) #将前n-1个盘子从x移动到y上 print(x,'-->',z) #将最底下的最后一个盘子从x移动到z上 hanoi(n-1,y,x,z) #将y上的n-1个盘子移动到z上 n=int(input('请输入汉诺塔的层数:')) hanoi(n,'x','y','z')