讲一下c语言中递归函数的使用方法有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了讲一下c语言中递归函数的使用方法有哪些?相关的知识,希望对你有一定的参考价值。

递归函数有三点要求:

1,递归的终止点,即递归函数的出口

2,不断的递归调用自身

3,递归函数主体内容,即递归函数需要做的事情

ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果。

具体例子如下:

void fun(int n)

   if(n<=0) return;   //1 这是递归的终点,即出口
    fun(n-1);        //2、递归函数自身的调用
    cout<<n<<endl;     //3 递归函数的主体内容


2,3合并的情况

int fun(int n)

   if(n<=0) return 0;
    return fun(n-1)+fun(n-2);  //2 3合并

参考技术A 相当于循环,要有判断条件,传递进去的参数要变化,满足条件调用自身,不满足条件就开始一层一层返回。简单例子:
int f(int i)
int sum=0;
if(i>0) sum+=f(i-1);
return sum;

main()
int a=10;
printf("%d",f(a));
参考技术B 递归,是函数实现的一个很重要的环节,很多程序中都或多或少的使用了递归函数。递归的意思就是函数自己调用自己本身,或者在自己函数调用的下级函数中调用自己。
递归之所以能实现,是因为函数的每个执行过程都在栈中有自己的形参和局部变量的拷贝,这些拷贝和函数的其他执行过程毫不相干。这种机制是当代大多数程序设计语言实现子程序结构的基础,是使得递归成为可能。假定某个调用函数调用了一个被调用函数,再假定被调用函数又反过来调用了调用函数。这第二个调用就被称为调用函数的递归,因为它发生在调用函数的当前执行过程运行完毕之前。而且,因为这个原先的调用函数、现在的被调用函数在栈中较低的位置有它独立的一组参数和自变量,原先的参数和变量将不受影响,所以递归能正常工作。程序遍历执行这些函数的过程就被称为递归下降。
程序员需保证递归函数不会随意改变静态变量和全局变量的值,以避免在递归下降过程中的上层函数出错。程序员还必须确保有一个终止条件来结束递归下降过程,并且返回到顶层。

第 22讲: 递归是神马

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量

1. 汉诺塔游戏

2. 树结构的定义:

技术分享图片

3. 谢尔宾斯三角形

4. 女神自拍

5. 

递归:

 

例子1:

def factorial(n):
result = n
for i in range(1, n):
result *= i

return result

number = int(input("please input inter:"))
result = factorial(number)

print("%d 的阶层是:%d" % (number,result))

例子2:

def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)

number = int(input("please input inter:"))
result = factorial(number)

print("%d 的阶层是:%d" % (number,result))

 

 

Homework:

Topic:

技术分享图片

Answer:

 










以上是关于讲一下c语言中递归函数的使用方法有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

C语言 递归程序 求解

哪些语言支持*递归*函数文字/匿名函数?

程序里的函数调用自己,这叫什么来着,貌似有个比较专业的说法

C 语言程序中子函数能不能调用子函数本身?

C语言中函数可以返回哪些类型的数据?(求详解)

在C语言中用递归调用的方法求n!