-1

嗨,我正在处理一个问题,我不确定我是否做得正确,因为我没有完全按照提示进行操作,因为我认为它是错误的并且使用+而不是x. 这是问题:

编写一个包含递归函数的程序,该函数返回 2n,对于任何整数n, n ≥ 0。(提示:2n = 2 * 2n-1何时n > 0。)(您也可以尝试以非递归方式执行此操作)。向用户询问数字 n 并返回适当的值。不要使用该2 ** n方法。

这是我写的:

def main():
    x = int(input("Please enter a value for x: "))
    print("The answer is: ", times2(x))
def times2(n):
   result = 0
   while n:
       result += 2
       n -= 1
   return result
main()

它基本上将每个输入乘以 2,我不确定这是否正确,也不确定我是否正确阅读了这个问题......请帮忙!

4

3 回答 3

3

从字面上理解你的问题:

def double(n, stop_recursion=False):
    if stop_recursion:
        return n
    else:
        return double(2 * n, stop_recursion=True)

它会调用自己吗?是的,所以它是递归的

它使用2 ** n吗?不

于 2013-08-11T22:55:16.550 回答
1

看来你想做2**n...

因此,您可以这样做:

def power2(n):
    if n == 0: return 1
    return 2 * power2(n - 1)

它是递归的,因为它会调用自己,而不是字面上使用2**n,并且适用于您想要的大于 0 的任何数字。

于 2013-08-11T23:00:30.070 回答
1

对于适用于任何数字 A 的任何整数 B 的幂的幂函数:

def a_power_b(a, b):
    if b > 0:
        return a_power_b(a, b - 1) * a
    elif b < 0:
        return a_power_b(a, b + 1) / a
    else:
        return 1

此外,如果您确实在递归地进行乘法运算,则可以使用:

def a_times_b(a, b):
    if b > 0:
        return a_times_b(a, b - 1) + a
    elif b < 0:
        return a_times_b(a, b + 1) - a
    else:
        return 0
于 2013-08-11T23:19:26.067 回答