基础强化1:递归算法

递归(recursion):程序调用自身的编程技巧
递归有两个基本要素:
(1) 边界条件:确定递归到何时终止,也称为递归出口。
(2) 递归模式:大问题是如何分解为小问题的,也称为递归体。

例1:
递归实现阶乘,阶乘是最适合用来使用递归的问题之一

Python实现:

def recursion(n) :
    if n == 1 :
        return 1         #递归结束
    return n * recursion(n - 1)  #问题规模减1,递归调用
print ( recursion(10))

Java实现:

import java.util.Scanner;

public class Recursion {
    public static int Factorial(int n) {
        if (n == 1 || n == 0) {
            return 1;
        }  else
            return n * Factorial(n - 1);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(Factorial(n));
    }
}

例2:递归实现汉诺塔问题(之前也写过)

def hanoi(n,A,B,C):
    if n==1:
        print(A,'移动到',B)
    else:
        hanoi(n-1,A,C,B)
        print(A,'移动到',B)
        hanoi(n-1,C,B,A)
hanoi(6,'X','Y','Z')

例3:字符串全排列问题

COUNT=0  
def array(n,begin,end):  
    global COUNT  
    if begin>=end:  
        print (n)
        COUNT +=1  
    else:  
        i=begin  
        for num in range(begin,end):  
            n[num],n[i]=n[i],n[num]  
            array(n,begin+1,end)  
            n[num],n[i]=n[i],n[num]  

n=['a','b','c']  
array(n,0,len(n))  
print (COUNT )
    原文作者:递归算法
    原文地址: https://blog.csdn.net/xiaxuesong666/article/details/78632187
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞