经典算法-递归(生兔子案例)

前言

算法是一个程序员必备的知识,从现在开始,来和我学习算法吧!

一、什么是递归

递归是数学上递推概念在计算机编程上的实现方式,简单的来说就是一种程序调用自身的编程技巧。

一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量

二、使用案例

有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

首先对于题进行分析:

前几个月兔子的数量为:1,1,2,3,5,8,13,21,34,55,89,144,从数据中可以发现从第三个月开始,每个月的兔子数量都是前两个月兔子数量之和

这个时候就满足一个递推的条件,我们就可以在程序中使用递归来实现这样一个计算:

int GetNub(int n)   
{
    
    
    int nub;
    if(n==1||n==2) nub=2;   
    else nub = GetNub(n-1)+GetNub(n-2);   //在程序中调用自身把问题简化
    return nub;
}

三,如何培养递归思想

递归思想往往会伴随时间线的发展而进行,并且前后往往有一定的联系,如果遇到这样的情况,可以考虑列举出前面的数据,并进行一定的规律总结

猜你喜欢

转载自blog.csdn.net/xinzhilinger/article/details/109230987
今日推荐