0

特定の範囲の回文を再帰的にチェックする関数を作成しようとしています。範囲は「is_palindrome_multi」に送信され、「is_palindrome」が呼び出されます。ただし、10 を超える数値では機能しないため、制限手順は次のようになります。

elif データ[0]==データ[-1]:

声明。11、22 などの数値に対して true を返さないのはなぜですか? 解説よろしくお願いします。

def is_palindorme_multi(beg, end):
    for i in range(beg, end):
        i = str(i)
        if is_palindrome(i) == True:
            print "Palindrome"
        else:
            print "Not palindrome"


def is_palindrome(data):    
    print data,
    if len(data)==1 or len(data)==0:
        return True
    elif data[0]==data[-1]:
        is_palindrome(data[1:-1])
    else:
        return False
4

1 に答える 1

6

再帰呼び出しの結果を返していません。

あなたの変更elif

elif data[0]==data[-1]:
    is_palindrome(data[1:-1])

に:

elif data[0]==data[-1]:
    return is_palindrome(data[1:-1])

is_palindromeただし、メソッドを次のように変更するだけです。

def is_palindrome(data): 
    return data == data[::-1]

本当に、ここで再帰を使う必要はありません。

于 2013-07-01T20:19:38.383 に答える