递归函数还不会?点进来就没错

递归函数是什么呢?其实就是在调用一个函数的过程中直接或间接地调用该函数本身。那么在什么时候用递归调用方法来解决呢?当然是新问题与原问题的解决方法相同时采用这一方法。但要注意的是不能无终止的自身调用,这是不正确的,这个时候if就是个很好的选择了。

下面我们就来看看一个老朋友--阶乘:

#include<stdio.h>
int factorial(int a){
    int b;
    if(a==1)
        b=1;
    if(a>1)
        b=a*factorial(a-1);//不断调用该函数本身,直到a<1;

    return b;
}
int main(){
    int a,b;
    scanf("%d",&a);
    b=factorial(a);
    printf("%d",b);
    return 0;
}

这里以a=3为例分析外部函数:

 由图可看出求解过程有两个阶段,第一阶段称为递推阶段:将原问题不断分解成新的子问题;第二个阶段称为回归阶段:按照递推的逆过程逐一求值回归,最终达到递推的开始处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值