递归算法的介绍

                                                递归算法的介绍

递归算法,可以说是一个运算效率低,但很好理解,而且应用广泛的算法。在一个函数中再次调用自身则是为递归算法。本次依然用阶乘做例子;但采用递归算法,显得更简洁,但递归的函数内部运行个人认为对初学者来说理解有一定的难度;一级一级的递归后,返回值也是逐级返回知道最外围得返回值则是我们所求;同时递归函数一定需要一个退出条件;下面是我的程序:请大家批评指正:
#include<stdio.h>
int main()
{
 int n,result;
 int factorial(int x);
 scanf("%d",&n);
 result=factorial(n);
 printf("%d\n",result);
}
int factorial(int x)
{
 int z;
  if(x<0)
 {
 
 printf("error\n");
 }
 else if(x==0||x==1) //这是一个退出条件,当调用到F1时,此时z=f1*2,这一层的Z是等于2*f1进行下一次运算,此时实参X=1;
 {    //满足条件z=1; 其实我们是吧F(n)值赋给Z,所以此时Z代表的是F1 ,我们要求的是F5,也就
 //是最外层的Z,所以逐次返回到最外层得到F5=Z(最外层)=120

 
 z =1;
 }
 else
 {
 
 z=factorial(x-1)*x; //当x=5时,F5=F4*5,然后程序递归调用F4,判定之后F5=F3*4*5...最后当(x-1)=1时
}   //用单步进入函数,可知道Z=1时终止递归的信号,之后回逐级RETURN回到最外围的Z=120

 return z;
 
}
本程序得重点在于,递归时,随着X实参变化,逐步调用函数时,应该用单步进入函数F8,递归的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值