简单点说,递归就是自己调用自己
这句话是我一哥哥对我说的,因为最近在自学C语言中的数组,他给我出来两道难题(现在会写了,自然就觉得不难了)
他特地跟我讲了一下递归的思想,在什么情况下会使用递归。
当然递归是比较抽象的,但我喜欢把抽象的东西用自己的理解方式来。
首先自学的时候去维基百科搜过递归,维基百科是这样说的

递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程

是不是感觉有点玄?

还好,维基百科还举了个例子,讲什么是递归
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”

可以看似这是一个循环?但递归很神奇,在他的使用中是没有用到C语言中关于循环的语句。
而是通过自己调用自己不断的实现一个循环。

在这里我用一个简单的例子来让大家理解一下递归。

阶层的例子。。n(n-1)(n-2)…………
很多人会想到用for循环来写。
那个可能就没有那么简单,
如果你熟练运用递归
就可以很简单

#include<stdio.h>
int digui(int n){
    if (n==0)
    return 1;
    return n*digui(n-1);
}


int main(){
    int m;
    scanf("%d",&m);
    printf("%d",digui(m));
} 
最后修改:2019 年 07 月 09 日
如果觉得我的文章对你有用,请随意赞赏