函数递归
程序调用自身的编程技巧称为递归 recursion)函数自己调用自己就是递归
你也可以理解成是一种嵌套结构,但递归分为俩部分,第一是“递”,进入嵌套结构。第二是”归“,最终会一步一步返回。
什么是递归?
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
递归策略
只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小
所以我们可以看到,递归必须满足俩个必要条件:
1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。
2.每次递归调用之后越来越接近这个限制条件。
函数递归典型例题的实现
求n的阶乘
题目描述:用递归的方法求n的阶乘
例如:
输入:4,输出 24
解题思路:n的阶乘为1234…(n-1)n,我们可以先用递推的思想,先算出n(n-1)的值,再用n(n-1)的值乘以(n-2),这样依次乘下去,以n=1为限制条件,返回1。然后再用回归思想,返回回去,及可得到n的阶乘。
JC(n)
n * JC(n-1)
n * JC(n-1) * JC(n-2)
n * JC(n-1) * JC(n-2) * JC(n-3)\n…
n * JC(n-1) * JC(n-2) * JC(n-3)…JC
(1)当满足我们的限制条件n=1时,返回1,然后回归
代码实现:
int JC (int n)
{
if (n == 1)
return 1;
else
return n * JC(n - 1); //阶乘的递归实现方式 }
int main()
{
int n = 0;
scanf("%d", &n);
int ret = JC(n);
printf("n的阶乘为:%d", ret);
return 0;
}