私はいくつかの入門的な再帰の問題に取り組んでおり、答えてもらいたい明確な質問があります。私が持っている最も厄介な質問は、この再帰が以下の解決された問題でどのように機能しているかということです。
問題を解決したにもかかわらず、再帰呼び出しがどのように文字列の内部に入るのか理解していません。コードを見るだけで、このメソッドは、指定された文字列の両端の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"));
}
}