递归调用使用的场景是能将问题的规模逐渐减小,并且有一个递归结束条件,问题规模会趋于这个结束条件,搞清这两点我觉得就好了。下面给你两个例子感受下,很简单:
- /**
- * 需求:有5个人坐在一起,问第五个人多少岁,他说比第4个人大2岁,第4个人比第3个人大2岁
- * 第3个人比第二个人大2岁,第2个人又比第1个人大2岁,第一个人说他/她10岁,求第5个人多大。
- *
- * 分析:使用递归调用:递归调用是指所处理的问题的规模在递增或递减,并且有一个结束递归的条件,递归函数有返回值。
- */
- class DiGui
- {
- //static int age;//定义成员变量:全局的;静态变量:被静态方法调用
- public static void main(String[] args)
- {
- System.out.println(getAge(5));
- }
- public static int getAge(int i)
- {
- int age;
- if(i==1)//递归结束的条件
- {
- age = 10;
- }
- else
- age = getAge(--i)+2;//反复调用自身,使问题规模变小,趋于结束
- return age;
- }
- }
复制代码
- /**
- * 需求:用递归方法求n!
- * 分析:递归结束条件是变量为1时,返回1
- */
- class DiGui1
- {
- public static void main(String[] args)
- {
- int n = 10;
- System.out.println(n+"!="+muti(n));
- }
- public static int muti(int n)
- {
- int result;
- if(n==1)//递归结束条件
- result = 1;
- else
- result = muti(n-1)*n;//
- return result;
- }
- }
复制代码
|