使用递归查找倍数
Finding multiples using recursion
给定 1 到 100 个数字,对于 3 的倍数它应该打印 "he" ,对于 5 的倍数它应该打印 "llo" ,对于 3 和 5 的倍数它应该打印 "hello".
这是我的:
for i in range (1,100):
if(i%3==0):
print("he")
elif(i%5==0):
print("llo")
elif(i%3==0 and i%5==0):
print("hello")
我将如何递归执行此操作?
这里是在 python 中做简单递归事情的大纲:
BASE_CASE = 1 #TODO
def f(current_case):
if current_case == BASE_CASE:
return #TODO: program logic here
new_case = current_case - 2 #TODO: program logic here ("decrement" the current_case somehow)
#TODO: even more program logic here
return f(new_case) + 1 #TODO: program logic here
当然,这并不能处理所有可能的递归程序。但是,它适合您的情况以及许多其他情况。你会调用 f(100)
,100
会是 current_value
,你检查一下你是否已经到达底部,如果是,return 适当的值向上调用堆栈。如果不是,则创建一个新案例,在您的案例中,它是通常由 "loop" 构造处理的 "decrement" 逻辑。然后为当前案例做一些事情,然后在新案例上再次调用该函数。这种重复的函数调用使它成为 "recursive"。如果你在函数的开头没有一个 "if then" 来处理基本情况,并且在函数的某处调用 "smaller" 值的函数,你可能会有一个不好的递归时间。
下面的代码怎么样?
def find_multiples(current, last_num=100):
# Base Case
if current > last_num:
return
result = ""
if current % 3 == 0:
result += "he"
if current % 5 == 0:
result += "llo"
if result:
print(f"{current}: {result}")
find_multiples(current+1, last_num)
find_multiples(1)
基本情况是 current
达到 last_num
或您要检查的最大数量。
这个递归函数打印一个数的倍数!希望对你有帮助
def multi(n,x):
if x == 12:
print(n*x)
else :
print(n*x,end =",")
multi(n,x+1)
print(multi(4,1));
给定 1 到 100 个数字,对于 3 的倍数它应该打印 "he" ,对于 5 的倍数它应该打印 "llo" ,对于 3 和 5 的倍数它应该打印 "hello".
这是我的:
for i in range (1,100):
if(i%3==0):
print("he")
elif(i%5==0):
print("llo")
elif(i%3==0 and i%5==0):
print("hello")
我将如何递归执行此操作?
这里是在 python 中做简单递归事情的大纲:
BASE_CASE = 1 #TODO
def f(current_case):
if current_case == BASE_CASE:
return #TODO: program logic here
new_case = current_case - 2 #TODO: program logic here ("decrement" the current_case somehow)
#TODO: even more program logic here
return f(new_case) + 1 #TODO: program logic here
当然,这并不能处理所有可能的递归程序。但是,它适合您的情况以及许多其他情况。你会调用 f(100)
,100
会是 current_value
,你检查一下你是否已经到达底部,如果是,return 适当的值向上调用堆栈。如果不是,则创建一个新案例,在您的案例中,它是通常由 "loop" 构造处理的 "decrement" 逻辑。然后为当前案例做一些事情,然后在新案例上再次调用该函数。这种重复的函数调用使它成为 "recursive"。如果你在函数的开头没有一个 "if then" 来处理基本情况,并且在函数的某处调用 "smaller" 值的函数,你可能会有一个不好的递归时间。
下面的代码怎么样?
def find_multiples(current, last_num=100):
# Base Case
if current > last_num:
return
result = ""
if current % 3 == 0:
result += "he"
if current % 5 == 0:
result += "llo"
if result:
print(f"{current}: {result}")
find_multiples(current+1, last_num)
find_multiples(1)
基本情况是 current
达到 last_num
或您要检查的最大数量。
这个递归函数打印一个数的倍数!希望对你有帮助
def multi(n,x):
if x == 12:
print(n*x)
else :
print(n*x,end =",")
multi(n,x+1)
print(multi(4,1));