尾递归
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数式尾递归的.
当递归调用是整个函数中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归.
尾递归的特点
在回归过程中不用做任何操作.
题目
问:请描述下面的递归定义式所要表达的计算是什么?
H(n)={1,H(n−1)+(1/n),if n = 1if n > 1
答:
这个递归定义计算为调和级数的数列之和,这个不属于尾递归,因为递归调用的返回值在一个表达式中使用
转换成尾递归
H(n,a)={a+1,H(n−1,a+(1/n)),if n = 1if n > 1