我需要使用公式v = (start * 2) 5來列印結果值。start引數是序列開始的值,count引數是要列印多少個值。我不知道如何讓基本案例被呼叫。
def print_sequence_rec(start, count)。
else:
v = (start * 2) 5.
print(v, end=""/span>)
print_sequence_rec(start, count 1)
例如,函式print_sequence_rec(2, 5) 應該列印2 9 23 51 107 219
uj5u.com熱心網友回復:
使count - 1而不是 1,以便count每次呼叫都減少一個。基本情況是當count == 0。
你還需要對v做一些處理。我建議將它傳遞給遞回呼叫。
def print_sequence_rec(start, count)。
# base case。
if count == 0:
通過:
# 遞回案例: pass.
else:
v = (start * 2) 5.
print(v, end=""/span>)
print_sequence_rec(v, count - 1)
或者更有可能的是,你應該擺脫它,把計算移到遞回呼叫中:
def print_sequence_rec(start, count)。
# base case。
if count == 0:
通過:
# 遞回案例: pass.
else:
print(start, end=""/span>)
print_sequence_rec((start * 2) 5, count - 1)
uj5u.com熱心網友回復:
John的回答很好地解決了你的問題,但這實際上似乎是一個使用生成器的好例子。
例如...
def gen_sequence_rec(start, count)。
while count >= 0:
yield start
start = (start * 2) 5
count -=1
...然后你可以把這個序列保存為一個串列......
seq = list(gen_sequence_rec( 2, 5)
#[2, 9, 23, 51, 107, 219]
......并列印你想要的東西......
print(seq)
[2, 9, 23, 51, 107, 219]
print(' '.join([str(x) for x in seq] )
2 9 23 51 107 219
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330532.html
標籤:
