网站被黑怎么恢复,装饰设计学校,有创意的logo设计图片,网页界面设计包括哪些原则1. 递归是什么#xff1f; 递归是学习C语言函数绕不开的一个话题#xff0c;那什么是递归呢#xff1f; 递归其实是一种解决问题的方法#xff0c;在C语言中#xff0c;递归就是函数自己调用自己。 写一个史上最简单的C语言递归代码#xff1a;
#include stdio.h 递归是学习C语言函数绕不开的一个话题那什么是递归呢 递归其实是一种解决问题的方法在C语言中递归就是函数自己调用自己。 写一个史上最简单的C语言递归代码
#include stdio.h
int main()
{printf(hehe\n);main();//main函数中又调用了main函数return 0;
}
上述就是一个简单的递归程序只不过上面的递归只是为了演示递归的基本形式不是为了解决问 题代码最终也会陷入死递归导致栈溢出。 递归的思想 把一个大型复杂问题层层转化为一个与原问题相似但规模较小的子问题来求解直到子问题不能再被拆分递归就结束了。所以递归的思考方式就是把大事化小的过程。 递归中的递就是递推的意思归就是回归的意思接下来慢慢来体会.
2. 递归的限制条件 递归在书写的时候有2个必要条件 • 递归存在限制条件当满足这个限制条件的时候递归便不再继续。 • 每次递归调用之后越来越接近这个限制条件。 在下面的例子中我们逐步体会这2个限制条件。
3. 递归举例 3.1 举例1求n的阶乘 计算n的阶乘不考虑溢出n的阶乘就是1~n的数字累积相乘。 3.1.1 分析和代码实现 我们知道n的阶乘的公式 n n ∗ (n − 1)!
举例5! 5*4*3*2*14! 4*3*2*1所以:5! 5*4!
这样的思路就是把一个较大的问题转换为一个与原问题相似但规模较小的问题来求解的。 n!--- n*(n-1)! (n-1)! --- (n-1)*(n-2)! .... 直到n是1或者0时不再拆解
再稍微分析一下当n1 的时候n的阶乘是1其余n的阶乘都是可以通过上述公式计算。 n的阶乘的递归公式如下 那我们就可以写出函数Fact求n的阶乘假设Fact(n)就是求n的阶乘那么Fact(n-1)就是求n-1的阶 乘函数如下
int Fact(int n)
{if(n0)return 1;elsereturn n*Fact(n-1);
}
测试
#include stdio.h
int Fact(int n)
{if(n0)return 1;elsereturn n*Fact(n-1);
}
int main()
{int n 0;scanf(%d, n);int ret Fact(n);printf(%d\n, ret);return 0;
}
运行结果这里不考虑n太大的情况n太大存在溢出