递归简单总结

本文介绍了递归的基本概念,包括直接递归和间接递归,并通过一个将苹果分割成等重份数的实例详细解释了递归的四大要素:递归出口、问题规模缩小、递归解决问题以及子问题解组成最终解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是递归?
递归就是程序不断的调用自身。



递归分为直接递归和间接递归:
•直接递归:函数在执行过程中调用本身。
•间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。


递归四大要素:
1.递归要有出口,也就是终止点,否则会一直循环,知道资源耗尽
2.问题不断缩小
3.问题通过再次递归可得到解决
4.子问题的组的解应该问题的最终解


例子:
将一个8两重的苹果分成若干重量相等的份。
1.首先将苹果对半切开,分成两份。
2.再次将两份对半分成重量的相等份。
3.不断重复2步骤
4.直到每一小份都是1两为止。


1、最终重量是每一份等于1两
2、每次切的都比上一次的小
3、当每份重量都是1两时,问题得到解决,每个子问题都可通过递归调用解决
4、每份重量都是1两时为最终结果。

public static int count =1;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        sliceApple(8,1);
    }

    public static void sliceApple(int weight,int times){

        if(weight <=1){
            return;
        }
        else{
            int getWeight = weight/2;
            count =count*2;
            System.out.println("第"+times+"次等分重量为:"+getWeight+"两 ,分成了"+count+"个苹果");
            times += 1;
            sliceApple(getWeight,times);
        }
    }

结果:
第1次等分重量为:4两 ,分成了2个苹果
第2次等分重量为:2两 ,分成了4个苹果
第3次等分重量为:1两 ,分成了8个苹果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值