您好我正在处理一个问题并且不确定我是否已正确完成,因为我没有完全按照提示进行操作,因为我认为它错了并使用+
代替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,我不确定这是否正确并且不确定我是否正确地阅读了这个问题...请帮忙!
答案 0 :(得分:3)
从字面上理解你的问题:
def double(n, stop_recursion=False):
if stop_recursion:
return n
else:
return double(2 * n, stop_recursion=True)
它自称吗?是的,所以它是递归的
是否使用2 ** n
?否
答案 1 :(得分:1)
您似乎想要2**n
...
因此,您可以这样做:
def power2(n):
if n == 0: return 1
return 2 * power2(n - 1)
它是递归的,因为它调用自身,不会逐字地使用2**n
,并且适用于任何你想要的大于0的数字。
答案 2 :(得分:1)
对于适用于任何数字A的任何数字A的电源功能:
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