您的位置:首页 > 其它

递归的概念和例题。

2017-12-23 16:00 169 查看
###16递归概念和注意事项
* A:递归概念和注意事项
* a: 递归概念
* 递归,指在当前方法内调用自己的这种现象
* 递归分为两种,直接递归和间接递归
* 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
* b: 注意事项
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归

###17递归求和计算
* A: 递归求和计算
* a: 题目分析
* 1+2+3+...+(n-1)+n:求1到n的和
* 总结规律:1到n的和等于1到(n-1)的和再加n
* getSum(n-1)+ n
* 递归出口:getSum(1) return 1;

* b: 案例代码
/*
* 方法的递归调用
* 方法自己调用自己
* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
* 注意:
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归
*/
public class DiGuiDemo {
public static void main(String[] args) {
int sum = getSum(3);
System.out.println(sum);
}

/*
* 计算 1+2+3+100和 = 5050
* 计算规律:
* n+(n-1)+(n-2)
* 100+(100-1)+(99-1)+...1
*/
public static int getSum(int n){
if( n == 1)
return 1;
return n + getSum(n-1);
}

}

###18递归求阶乘
* A: 递归求和计算
* a: 题目分析
* 5!=5*4*3*2*1
* =5*4!
* 4!=4*3!
* 3!=3*2!
* 2!=2*1!
* 1!=1
* n!=n*(n-1)!
* 递归出口:n*getJieCheng(n-1): getJieCheng(1) return 1;
* b: 案例代码
/*
* 方法的递归调用
* 方法自己调用自己
* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
* 注意:
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归
*/
public class DiGuiDemo {
public static void main(String[] args) {
System.out.println(getJieCheng(5));

}

/*
* 计算阶乘 5!
* 5*4*3*2*1
*/
public static int getJieCheng(int n){
if ( n == 1)
return 1;
return n * getJieCheng(n-1);
}
}
###19递归计算斐波那契数列
* A: 递归计算斐波那契数列
* a:题目分析
* 1 1 2 3 5 8 13 21
* 从第三项开始,后面的每一项都等于前面两项的和,第一项和第二项的值为1,作为程序的出口
* b: 案例代码
/*
* 方法的递归调用
* 方法自己调用自己
* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
* 注意:
* 递归一定要有出口, 必须可以让程序停下
* 递归次数不能过多
* 构造方法,禁止递归
*/
public class DiGuiDemo {
public static void main(String[] args) {
System.out.println(getFBNQ(12));
}
/*
* 方法递归,计算斐波那契数列
*
*/
public static int getFBNQ(int month){
if( month == 1)
return 1;
if( month == 2)
return 1;
return getFBNQ(month-1)+getFBNQ(month-2);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: