您的位置:首页 > 编程语言 > Java开发

递归函数及Java范例

2008-08-30 12:48 246 查看
首先看看这两篇文章:
递归函数之J***A演绎--http://blog.csdn.net/lxgljj/archive/2004/10/21/145147.aspx
数据结构与面向对象程序设计—— C++版(第3版) 9.1 递归函数 --http://book.csdn.net/bookfiles/461/10046116316.shtml

如第二篇文章所说:

递归思想

假设一个问题有一个或多个分支条件,而其中的某些子任务是最开始时试图解决的同一问题的简单版本,那么这些子任务通过递归调用来解决。

函数在进行递归调用时,必须要有一个或多个分支条件,在这些分支条件内,整个计算不需要递归来完成。这些没有递归的分支条件称为停止条件或基本条件。

设计递归算法,一定要有结束的条件,同时找到反复出现的一个模式。

附上的Java代码中的代码单元来自上两篇文章,但是我综合在了一起
//计算斐波那契数列
class test1 {
int func(int x) {
if (x > 2)
return (func(x - 1) + func(x - 2));
else
return 1;
}
}
//计算若一头小母牛,从出生起第四个年头开始每年生一头母牛,按次规律,第n年时有多少头母牛?
class test2 {
int cattle(int n){
if(n<=0) return 0;
if(n<=3) return 1;

return cattle(n-1)+ cattle(n-3); //此处是递归要好好理解。
}
}
//纵向输出数字的每位
class test3 {
void write_vertical(int number){
if (number < 10)
System.out.println(number); // Write the one digit.
else {
write_vertical(number/10); // Write all but the last digit.
System.out.println(number % 10); // Write the last digit.
}
}
}

public class recursion {
public static void main(String[] args){
int x1 = 1;
int sum = 0;
int n = 5;
test1 t1 = new test1();
for (int i = 1; i <= n; i++) {
x1 = t1.func(i);
System.out.print(x1+":");
sum = sum + x1;
}

System.out.println("sum=" + sum);
int catYear = 15;
test2 t2 = new test2();
System.out.println("test2:"+t2.cattle(catYear));

int testNumber =1234;
test3 t3 = new test3();
System.out.println("test3:"+testNumber);
t3.write_vertical(testNumber);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: