2016-03-20 6 views
-2

ここで間違っていた箇所を見ることができます。回帰を使用しているパリンドローム関数

基本的に、プログラムは単語、単語の長さを取り込み、それが回文型であるか、回文型でない場合に返し、関数は再帰を使用する必要があります。

bool palindrome(char a[],int length){ 
int start = *a; 
if (*a != a[length-1]) 
    return false; 

if (*a == a[length-1]||start<length) 
    return true; 

else 
    return palindrome(a+1,length-1); 

return false; 
} 

誰でもこの機能の問題を見ることができますか?

+1

てみてください(https://en.wikipedia.org/wiki/Rubber_duck_debugging):それから彼は私にこのことを示しました。これは非常に短いコードであり、長い時間はかかりません。私はあなたのラバーダックが問題を把握する何かを賭けるでしょう。ヘック、私のゴム製の鴨は5秒で問題を見つけました。 –

+0

haha​​、私は何か愚かな、悪い私のゴムのアヒルを今得て感じる – owen95

答えて

0

私のアヒルはあなたがとても近いと言います。彼はstartで何をしようとしているのか忘れてしまい、それぞれの再帰が1でなく2で長さを減らすことが必要だと言います。(最初の文字と一致する文字、最後の文字です。 [あなたのゴム製のアヒルにあなたのコードのすべての行を説明]

bool palindrome(const char* a, int length) { 
    if(length < 2) return true; 
    if(a[0] != a[length-1]) return false; 
    return palindrome(a+1, length - 2); 
} 
+0

私はそれを自分自身で得た!愚かな間違い、あなたのアヒルの感謝を伝えよう! – owen95

+0

彼は「クワック!」と答えた。 –

関連する問題