初学C语言时不知道什么是递归,就知道哦,那样老师教的就是递归,可是最后复习的时候,看见递归写菲波那切数列时,还是不知道在写的,只知道用循坏写递归,当然当时学递归时候和循环一起学的加上也不熟悉,所以写错了,所以写了这篇文章给你们,希望在学习的路上加油!
首先,递归是什么
度娘告诉你
是不是看不懂,其实我也看不懂(手动狗头)
简而言之,递归就是一种算法,
举个从小就听过的例子:从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山…
这其实就是递归
但是一般的递归就是程序中我们要学习的都有一个终止条件;
递归是要有终止条件的;
而递归不等同于循环,记住递归不是循环
而C语言中递归一般出现在函数中
其实就与函数的嵌套有异曲同工之妙;
一个套着一个
这就需要终止条件来使这个嵌套终止;
话不多说,
举一个基本上学编程都见过的例子阶乘函数
我这里只写出函数
int jiecheng(int n)
{
int s;
if (n == 1 && n == 0)
s = 1;
if (n != 1)
s = n * jiecheng(n - 1);
return s;
}
首先这是表示的是1* 2 * 3 * 4 *5 * 6 * 7 . . . . . . . . . * N
jiecheng这个函数中嵌套jiecheng这个函数
这在我眼里看成是一种特殊的函数嵌套,
因为嵌套的是自己本身;
在理解理解上面递归的含义:按照某一包含有限步数的法则或公式对一个或多个前面的元素进行运算,以确定一系列元素(如数或函数)的方法。
想必你已经知道了一些,会说原来这就是递归,
但最重要的是终止条件
if (n == 1 && n == 0)
s = 1;
这个就是终止条件
现在我们假设N=4
int jiecheng(int n)
{
int s;
if (n == 1 && n == 0)
s = 1;
if (n != 1)
s = n * jiecheng(n - 1);
return s;
}
在原函数中N=4输入
if判断
s=4* jiecheng(4-1); …@1
而jiecheng(4-1)也要进行
渐渐
n=3;
n=2
n=1;
if(n=1&&n=0)
s=1;没有后面的函数进行
所以终止了
但是不要以为s=1;
这个s=1是@1处要乘以的数
最后你学会递归了吗?
对你有用的话给个赞不?
今年最后一次码字
在这里先祝愿大家元旦快乐
新的一年代码无bug!