ITスクール DAY12 Recursive

2023/07/24に公開

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