재귀적함수호출 Recursive Function Call
함수가 다시 자기자신 함수를 호출하는것
함수도 메모리에 올라가는것이기에 주소에 접근해 계속 호출이 가능하다.
종료하는 조건을 반드시 만들어야한다.
재귀적함수호출를 너무 많이하면 Stack Ove Flow가 발생한다.
#include <iostream>
#include <vector>
using namespace std;
void countDown(int count) {
cout << count << endl;
if (count != 0) {
countDown(count - 1);
}
}
int a = 1;
int sumTo(int sumto) {
if (sumto <= 0) {
return 0;
}
else if (sumto <= 1) {
return 1;
}
else {
int sum_minus_one = 0;
sum_minus_one = sumTo(sumto - 1);
return sum_minus_one + sumto;
}
}
int main()
{
countDown(10);
cout << "=========================" << endl;
cout << sumTo << endl;
//재귀호출하면 10에서 1씩 감소시키며 1이 나올때까지 반복한다.
//1이 나오면 리턴값으로 하나씩 돌려준다.
//1(else if(sumto <= 1)의 결과값)+2(sumto)
//3은 그전에 호출된 sum_minus_one의 결과값으로 간다.
//3 + 3, 6 + 4, 10 + 5 형식으로 계속 돌려준다.
//cout << sumTo(10) << endl;
cout << test(0) << endl;
vector<int> v;
v.reserve(10);
v.push_back(45+10);
v.push_back(36+9);
v.push_back(28+8);
v.push_back(21+7);
v.push_back(15+6);
v.push_back(10+5);
v.push_back(6+4);//return 6을 받고 동작
v.push_back(3+3);//return 3을 받고 동작
v.push_back(1+2);//return 1을 받고 동작
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ assert,Ellpsis (0) | 2019.08.02 |
---|---|
c++ 방어적프로그래밍 기초 (0) | 2019.08.02 |
c++ vector (size,capacity,reserve) vector를 stack처럼 사용하기 (0) | 2019.07.31 |
c++ 스택Stack 힙Heap (0) | 2019.07.31 |
c++ 함수포인터 Function Pointers (0) | 2019.07.31 |