首页 > 编程语言 > 详细

浅谈递归算法函数的入门到放弃

时间:2019-11-23 21:20:11      阅读:96      评论:0      收藏:0      [点我收藏+]

递归函数的使用

什么是递归函数

递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。

使用递归函数遵守的原则

  • 循环调用函数本身
  • 每次调用规模次数都有所减少(通常减半)
  • 前一次的输出作为后一次的输入
  • 必须包含一个基线条件(必须存在出口,防止死循环)

使用递归函数的步骤

  • 先考虑递归函数的基线是什么,将基线作为函数的出口,定义好逻辑框架

if  xxx:
    return 结束

else XXX:
    return 继续调用递归处理逻辑
  • return 处理逻辑时,需要调用函数本身,进行逻辑处理

可用于递归函数的算法

  • 阶乘运算
  • 二分查找
  • 斐波那契算法(兔子算法)
  • 汉诺塔

递归函数参考代码

# 阶乘运算
int factorial(int n){
    if(n == 1)
        return 1;
    else
      return n * factorial(n - 1);
}
# 二分查找
    def binarySearch(search_tag,search_list):
        
        length = len(search_list)

        middle_index = int(length/2)
        
        middle_num = search_list[middle_index]      

        if length == 1 and search_list[0] != search_tag:
            return False

        if middle_num == search_tag:
            return True

        elif middle_num < search_tag:
            return binarySearch(search_tag,search_list[middle_index+1:])

        elif middle_num > search_tag:
            return binarySearch(search_tag,search_list[:middle_index])
# 斐波纳契数列
int Fibonacci(int n){
    if (n <= 1)  
        return n;  
    else  
        return Fibonacci(n-1) + Fibonacci(n-2);  
}
# 汉诺塔

void Hanoi (int n, char A, char B, char C){
    if (n==1){ //end condition
        move(A,B);//‘move’ can be defined to be a print function
    }
    else{
        Hanoi(n-1,A,C,B);//move sub [n-1] pans from A to B
        move(A,C);//move the bottom(max) pan to C
        Hanoi(n-1,B,A,C);//move sub [n-1] pans from B to C
    }
}

浅谈递归算法函数的入门到放弃

原文:https://www.cnblogs.com/yangsun/p/11919716.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!