c/c++ c语言递归调用
分类:
文章
•
2024-07-23 15:48:46
递归调用

- 求 1 + 2 + 3 …….n的和;
- 递归的思想分析下:
- 1到n,假设 [1到n-1]的和知道了,结果+n = [1,n]的结果;
- 依此类推,得到一个最小规模问题的解决,那么后面所有的都知道了;

- 运行模型
- 假设小一级规模得到解决,推导出当前规模的问题解;
- 问题规模转换越来越小,最小规模的问题,我们返回一个值,
- 随着函数调用,使得问题规模不断减少的同时,栈在往下面一直增加;
- 直到遇到最小规模的问题得到解决,栈才不会增加了,才会依次返回;
递归秘诀

递归过程解析
- 随着问题规模的大小1000的,10000的,同样的代码对栈的消耗是不一样的
- 对栈的大小,它不是鲁棒的;(物理学的一个概念)
- 普通的算法,对栈的消耗不会随着问题规模的变化而变化;
- 递归算法,问题的规模越大,递归的次数越大,那么对栈的消耗越大;
- 每个应用程序的栈的大小是固定的,递归的时候层次不宜过多,解决规模不大的问题;

- 所以只能解决规模不大的问题;
- 数学归纳法的思想,能够方便我们写出复杂的逻辑;
- 程序中栈的大小是可以由编译器来配置,那么编译出来的程序,就会使用你设置的栈的大小,默认是1MB;
- 如果实在要用递归,然而栈不够用,可以通过修改编译器来改变栈的大小;
- 栈是可以修改大小的;
递归优点与缺点

总结

源代码