✨
ITスクール DAY12 Recursive
Recursive
自分自信を呼び出す関数。
コードが短くなり、読みやすくなる。
しかし、関数を呼び出し、呼び出し、呼び出すことで、stackメモリにパラメータ、戻り値、戻る位置が含めているため、stack over flowが起きる可能性が高い。
public static void main(String[] args){
System.out.println(factorial(5));
}
public static int factorial(int n){
if(n<2) return 1;
else factorial*factorial(n-1);
}
最初はCaller main関数のスレッドがstackメモリの下に保管され、Calleeのfactorial(5)がメモリがその上に割り当たる。また、factorial(5)がCallerになり、factorial(n-1)であるfactorial(4)を呼び出す。次はfactorial(4)がfactorial(3)を呼び出し、呼び出すことで、
stackメモリはメモリが段々たまる。呼び出しは終わったが、リターンが進めてないため、メモリを解除することができないためだ。
https://joooing.tistory.com/entry/재귀-→-꼬리-재귀-Tail-Recursion
public class MethodEx7 {
public static void main(String[] args) {
String str = "LEVEL";
if(checkPalindrome(str)) {
System.out.println(str + "은 회문입니다.");
}
else {
System.out.println(str + "은 회문이 아닙니다.");
} }
public static boolean checkPalindrome(String str) {
if(str.length()<=1) return true;
if(str.charAt(0)!=str.charAt(str.length()-1)) return false;
else {
return checkPalindrome(str.substring(1,str.length()-1)); //재귀
}
}
}
最初、学ぶ概念であったため、とても難しかった。
Discussion