递归就是让函数中套用自己如下面代码红色部分,像剥洋葱一样让问题大化小(容易思考和实现)。但也存在栈区溢出strckoverflow的问题,与迭代(循环)各有好处。

//递归 和 非递归 分别实现求第n个斐波那契数

//例如:

//输入:5  输出:5

//输入:10, 输出:55

//输入:2, 输出:1


//递归

int Count(int i)

{

if (i <= 2)

{

 return 1;

}

else

 return Count(i - 1) + Count(i - 2);

}


int main()

{

int n = 0;

scanf("%d", &n);

int back = Count(n);

printf("%d\n", back);

return 0;

}


//非递归


int Count(int i)

{

if (i <= 2)

{

 return 1;

}

 int a = 1;

 int b = 1;

 int c = 1;

while (i >= 3)

{

 c = a + b;

 a = b;

 b = c;

 i--;

}

return c;

}


int main()

{

int n = 0;

scanf("%d", &n);

int back = Count(n);

printf("%d\n", back);

return 0;

}