私はいくつかの入門的な再帰問題に取り組んでいます。私は答えたいと思う明確な質問があります。私がもっとも気にする質問は、以下の解決された問題でこの再帰がどのように動作しているかということです。再帰的パルミトム関数はどのように機能しますか?
問題を解決したにもかかわらず、私は再帰呼び出しが文字列の内部にどのように入るのか理解できません。コードを見るだけで、このメソッドは指定された文字列の両端の2文字をチェックし、残りの文字はチェックしないように見えます。私の教科書は、基本的には、あなたのreturn文が問題を洗練している限り、どのように再帰が働くか心配しないという深く不満な答えを与えてくれます。しかし、ループをトレースするのと同じ方法で再帰的メソッドをどのようにトレースすることができるか理解せずに、後続の再帰問題にどのようにアプローチするかを知るのが難しいです。
どのような知恵の言葉も大変ありがとうございます。
ありがとうございます!
public class isPalindrome {
public static boolean isPalindrome(String str)
{
//test for end of recursion
if(str.length() < 2) {return true;}
//check first and last character for equality
if(str.charAt(0) != str.charAt(str.length() - 1)){return false;}
//recursion call
return isPalindrome(str.substring(1, str.length() - 1));
}
public static void main(String[] args)
{
System.out.print(isPalindrome("deed"));
}
}
ダイアグラムが非常に役に立ちましたので、私はコンセプトを理解し始めたと思います。 – gryb
心配しなくても、コンセプトを取得すると、他の再帰アルゴリズムを理解するのが簡単になります= D –