這是迭代解決方案:
def firstNCharsSame(string, string2, n):
same = True
for i in range(n):
same &= string[i] == string2[i]
return same
print(firstNCharsSame("apple", "appll", 5))# ->false
print(firstNCharsSame("aaaae", "appll", 5))# ->false
print(firstNCharsSame("apple", "apple", 5))# ->true
我需要做一個遞回函式來做同樣的事情。我發現遞回非常令人困惑,但這是我的嘗試。
def firstNCharsSame(string, string2, n):
if n > 1:
firstNCharsSame(string, string2, n-1)
return string[n - 1] == string2[n - 1]
這有效地僅檢查字串中的最后一個字符是否相同。我需要&這個函式的所有呼叫回傳的所有值,就像我在迭代版本中所做的那樣,但我很難理解如何訪問“內部(堆疊更高)”函式從“外部(降低堆疊)”功能。
uj5u.com熱心網友回復:
您可以使用基本情況作為 0,并像這樣實作:
def firstNCharsSame(string, string2, n):
if n == 0:
return True
if n > min(len(string), len(string2)):
return False
return string[n - 1] == string2[n - 1] and firstNCharsSame(string, string2, n-1)
uj5u.com熱心網友回復:
您需要將遞回結果與測驗當前索引結合起來。
def firstNCharsSame(string, string2, n):
if n == 0: # base case
return True
if n > len(string) or n > len(string2):
return False
return string[n - 1] == string2[n - 1] and firstNCharsSame(string, string2, n-1)
uj5u.com熱心網友回復:
也許是這樣的:
def firstNCharsSameRec(string, string2, current, n):
if current >= n:
return True
if string[current] != string2[current]:
return False
return firstNCharsSameRec(string, string2, current 1, n)
并這樣稱呼它:
print(firstNCharsSameRec("apple", "appll", 0, 5))
print(firstNCharsSameRec("apple", "appll", 0, 3))
uj5u.com熱心網友回復:
您只需要使用最后一個引數作為遞減計數器。只需比較第一個字符并遞回其余字符:
def firstNCharsSame(a, b, n):
return not n or a and b and a[0]==b[0] and firstNCharsSame(a[1:],b[1:],n-1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/317945.html
