摄影:产品经理实验室的年会下午茶
已知 n 为正整数,写一个递归函数计算。
在 Python 里面要计算非常简单:
>>> def calc(n): ... return2 ** n - 1 ... >>> calc(10) 1023
运行效果如下图所示:
现在,需要写一个递归函数来计算的值。
如果要计算,那么这个递归函数非常简单:
def calc(n): if n > 0: return2 * calc(n - 1) else: return1
现在的问题是,如何把-1
放到这个函数里面去?
可能有同学想到一个比较贱的方法,就是在函数里面再定义一个函数:
def calc(n): def power(n): if n > 0: return2 * power(n - 1) else: return1 return power(n) - 1
然而,这种方法实际上并不满足题意。虽然power
是一个递归函数,但是calc
只是普通函数。
那有没有更好的办法来计算呢?
考虑到.同时,所以我们可以把函数改写为:
def calc(n): if n == 1: return1 else: return1 + 2 * calc(n - 1)
运行效果如下图所示: