1、递归做为一种算法在程序设计语言中广泛使用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
2、递归算法一般用于解决三类问题:
1)数据的定义是按递归定义的。(Fibonacci(斐波那契)的函数)
2)问题解法按递归算法实现。(回溯)
3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)
3、下面是使用递归算法实现计算某个整数在二进制中的个数,代码如下所示:
/**
*计算二进制中1的个数,
*N为奇数,二进制中1的个数等于N/2的个数
*例子:
*num = 13
*1.getBinary(13/2=6)+1;
*2.getBinary(6/2=3)+1
*3.getBinary(3/2=1)+1+1
*4.getBinary(1)+1+1;
*getBinary(1)返回1,与后边两个1相加得结果3
*/
public static innt getBinary(int num){
if(num ==1)
return 1;
if(0 ==num % 2){
return getBinary(num/2);
}else{
return getBinary(num/2)+1;
}
}