从零开始学习c语言|20、递归

递归
调用函数本身
设置了正确的结束条件

用递归实现算法:求5的阶乘,即5!=?

#include <stdio.h>
int factorial(int n)
{
    int res = n;
    if (n > 0)
    {

        res *= factorial(n - 1);
    }
    else
        res = 1;
    return res;
}
int main()
{
    printf("%d", factorial(5));

    return 0;
}

用递归实现汉诺塔


#include <stdio.h>
char *hanoi(int n, char x, char y, char z)
{
    if (n == 1)
        printf("%c-->%c\n", x, z);//当x针只有一个铁片时,把其从x针移往z针
    else
    {
        hanoi(n - 1, x, z, y);//借助z针把x针上的铁片移往y针上
        printf("%c-->%c\n", x, z);//将x针上的铁片移往z针上
        hanoi(n - 1, y, x, z);//借助x针,把y针上的铁片移往z针
    }
}
int main()
{
    hanoi(3, 'X', 'Y', 'Z');

    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值