[英]Creating a recursive geometric sequence function python
def geo():
start = int(input()) # starting number
multiplier = int(input()) # the multiplier
length = int(input()) # how long the list should be
for i in range(length):
x = start * multiplier ** i
print(x, "", end = "")
print()
我需要基于用户输入创建一个递归几何函数。 我知道如何非递归地处理它,但是我如何递归地处理它? 提前致谢。
即:如果用户输入
start = 1
multiplier = 2
length = 5
Output: 1, 2, 4, 8, 16
编辑:感谢所有的示例家伙,我知道递归现在好多了。
删除for循环。 取而代之的是在参数中递减,以递归方式调用该函数。 创建一个以整数作为参数的函数,并在满足条件之前每次都调用它。
def geo(start, multiplier, length, i=0):
if length <= 0:
exit() #or use a return statement
x = start * multiplier ** i
print(x, "", end = "")
print()
geo(start, multiplier, length-1, i+1)
start = int(input())
multiplier = int(input())
length = int(input())
i=0
geo(start, multiplier, length, i)
假设您有一个要转换为递归函数的循环:
for i in range(length):
x = start * multiplier ** i
您需要做的是:
i < length
) 在函数之前执行此操作,因为您需要此值
length = int(input()) # how long the list should be
start = int(input()) # starting number
multiplier = int(input()) # the multiplier
def recursive_geo(i):
# stop condition
if i == length:
return 1 # since the value will be multiplied by the previous values, you don't want to use 0 or any other value
else:
print(x, "", end = "")
print()
return start * multiplier ** i * recursive_geo(i+1)
对于任何递归函数,您都需要一个基本案例和一个一般(递归)案例。
让我们从当前代码开始获取输入,但是我们将立即调用递归函数,而不是立即计算值。
def geo():
start = int(input()) # starting number
multiplier = int(input()) # the multiplier
length = int(input()) # how long the list should be
result = geo_rec(start, multiplier, length)
print(result)
def geo_rec(start, multiplier, length):
print(start) # As per your current program
# Base case check
if length = 0:
return start
# Recursive case
else:
start = start * multiplier
length = length - 1
geo_rec(start, multiplier, length)
现在考虑,如果长度为0,我们将得到什么? 我们将开始-很好。 如果length = 1,我们将递归一个级别,然后返回start(这将是我们原来的start *乘数)-也很好。
请注意,在每次执行递归案例时,我们都逐步采用基本案例吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.