1、递归在编程上的形式是如何表现的吗?
在编程上,递归表现为函数调用本身这么一个行为 举个例子(递归求阶乘)
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
num=int(input("请输入一个正整数:"))
result=factorial(num)
print("%d的阶乘是:%d"%(num,result))
2、递归必须满足的两个条件是什么?
3、按照递归的特性,有没有不得不使用递归的情况?
例如汉诺塔,目录索引(因为你永远不知道这个目录里是否还有目录),快速排序(二十世纪十大算法之一),树结构的定义等如果使用递归,会事半功倍,否则会导致程序无法实现或者难以理解。
4、用递归去计算阶乘或者裴波那契数列是很糟糕的算法,你知道为什么吗?
每次函数的调用都需要进行压线、弹线、保存和恢复寄存器的栈操作。而且递归如果忘了返回,会变成一个无底洞
5、简述递归的优缺点
优点:
缺点
6、使用递归写一个power()函数模拟内建函数pow(),即power(x,y)是计算x的y次幂的值
def power(x,y):
if y==0:
return 1
else:
return x*power(x,y-1)
res=power(3,0)
print(res)
往期笔记