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