4.3 递归
由于这一章节有大量关于gdb的操作(上一章的坑),所以这里仅介绍一下递归的定义和我自己的一些理解
事实上,这章节递归函数里出现的很多错误都是可以通过静查去规避的,gdb只是一个帮助查错的方法,静查有助于提高你分析代码运行过程的能力(别问,问就是操作系统没学好,而且默认的path不是我平时放c++文件的目录,而且我一般写博客测试的文件是桌面上随便建立了一个文件,所以一般是不会做操作系统相关的操作)
关于递归
关于递归,书本上举了一个非常有意思的例子(当然这个例子是死循环啊):
递归的定义如下:(可以理解为主函数)
递归:如果还是没明白参见“递归”。
你可以把递归看作一个函数,也就是说,我们在递归这个函数的函数体内,利用到了递归这个函数。(套娃?)
事实上以我个人的经验(Null?),递归一般运用于带参数的函数。用到递归的任务一般都可以分解为非常多的(若干的,甚至我们可能不能提前了解这个数字的具体值)分任务。这些分任务按照一定的关系(并不一定是++哦)互相联系在一起。
当然上面这个递归被称作无限递归,我们在写递归的时候需要避免这样的问题。
递归函数
这里我们举一个我们熟悉的例子:
#include<stdio.h>
int f(int n){
return n==0?1:f(n-1)*n;//n-->n-1-->n-2····-->0
}
int main(){
printf("%d",f(10));
return 0;
}
这就是用递归的方法去写一个阶乘函数。
事实上,不用函数和递归也可以写出所有的程序,函数和递归提供了一种更为整洁和好理解的方式去编写我们的代码。
还有的就是,我这个是自己写的啊,好歹用的是自己的话啊,怎么又审核不过啊救命。