递归的概念与模型设计

递归是编程中的重要概念,适用于解决特定类型的问题。使用递归需满足三个条件:问题可转化为规模缩小的同类问题,问题能通过递归逐步简化,以及存在明确的终止条件。阶乘问题是递归的一个典型例子,其定义和解法都是递归的。递归模型包括递归出口和递归体,分别确定递归的终止和进行方式。递归在算法设计中发挥着关键作用,如阶乘函数的实现即利用了递归思想。
摘要由CSDN通过智能技术生成

        在计算机编程的道路上,决心修行时,第一个想到的起点却是递归,也许这就是编程思想的一种默契。

        递归是程序设计中一个强有力的工具,但是大多数人不会自然而然地想到递归。递归可以方便我们解决某些问题,我们需要考虑在哪些情况下使用递归。一个问题要采用递归递归方法来解决问题时,必须符合以下3个条件。

       (1)解决问题时,可以把一个问题转化成为一个新的问题,而这个新的问题的解决方法仍与原问题的解法相同,只是处理的对象不同,这些处理的对象之间是有规律的递增或递减的;

       (2)可以通过转化过程使问题得到简化;

       (3)必定要有一个明确的结束递归的条件,否则递归将会无止境地进行下去,直到耗尽系统资源。也就是说必须要有某个终止递归的条件。

        如阶乘问题,求n的阶乘(n!),可以转化为n(n-1)!;而要求n(n-1)!又可以转化为(n-1)((n-2)!;……;这里面都 有一个数乘以另一个数的阶乘问题,被处理的对象分别是n,n-1,……,是有规律的递减。但是我们不能让程序无止境地执行下去,必须给一个结束条件。该问题恰好有一个结束条件,即当n=0时,0!=1。

        有两种情况常用到递归方法:

       (1)定义是递归的。

       (2)问题的解法是递归的。

         阶乘函数的定义采用的就是递归方法。如 

                            1     ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值