본문 바로가기
알고리즘 && 자료구조

FOR문을 재귀함수로 변환

by bloodFinger 2020. 6. 2.
int[] data = {7, 5, 6, 1, 9};

이러한 배열을 더할때 for문을 쓰지 않고 모두 더하려면 재귀함수를 호출해야 한다.

 

 


 

처음 의식의 흐름대로 이렇게 하면 되겠지 하면서 풀었는데

반복문을 빠져 나가면서 다시 반대로 더했던 값이 처음으로 돌아가는 현상이 일어났다...

이런 현상을 막기위해서는 return 할때 값을 더해줘야 해결될꺼라는 생각에 다시 재귀함수를 만들었다.

 

 

-처음 재귀함수

	public static int sumFuc(int[] data, int total, int cnt){
		if(data.length > cnt ){
			total += data[cnt];
			//System.out.println("함수가 호출 전 : " + cnt + "/"+ total);
			sumFuc(data,total,cnt+1);
			//System.out.println("함수가 호출 후 : " + cnt + "/"+ total);
		}else{
			return 0;
		}
		
		return total;
	}

 

 

- 개선된 재귀함수

	public static int sumFuc(int[] data, int cnt){
		if(data.length > cnt ){
			//System.out.println("data[cnt] : " + data[cnt]);
			return data[cnt]+sumFuc(data,cnt+1);
			
		}else{
			return 0;
		}
	}