函数的递归
什么是递归呢??
程序调用自身的编程技巧称为递归(recursion),递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常
把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可描述出解题过程所需要的多次重复运算,大大减少了程序的代码量
递归的主要思考方式在于:化繁为简。
递归的两个必要条件
1.存在限制条件,当满足这个限制条件的时候,递归便不再继续
2.每次递归调用之后越来越接近这个限制条件。
代码
#include<stdio.h>
void print(unsigned int n) { //定义一个无整型变量来接受nub的值
if (n > 9) {
print(n/10); //只要大于就都除10,因为顶的是整型所以后面的小数全部不要这样就会拿到第一个(比如屏幕输入的123,那么一直除10就会的到1.23,但是我这里定义的是整型所以这里变成1)然后就停止调用print(),因为1<9的所以就不成立就会打印第一个数字1,然后程序就会递归回去,1 2 3 依次打印(因为刚刚打印了1 print()程序就递归回去)
printf("%d ", n % 10);
}
int main() {
unsigned int nub = 0; //定义一个无整型变量
scanf("%u", &nub); //从屏幕中获取nub的值
print(nub); //将nub地址传过去
return 0;
}
思维导图
注意:条件要接近限制条件,不然会到时stack over 栈溢出的问题。