首先看看这两篇文章:
递归函数之JAVA演绎--http://blog.youkuaiyun.com/lxgljj/archive/2004/10/21/145147.aspx
数据结构与面向对象程序设计—— C++版(第3版) 9.1 递归函数 --http://book.youkuaiyun.com/bookfiles/461/10046116316.shtml
如第二篇文章所说:
设计递归算法,一定要有结束的条件,同时找到反复出现的一个模式。
附上的Java代码中的代码单元来自上两篇文章,但是我综合在了一起
递归函数之JAVA演绎--http://blog.youkuaiyun.com/lxgljj/archive/2004/10/21/145147.aspx
数据结构与面向对象程序设计—— C++版(第3版) 9.1 递归函数 --http://book.youkuaiyun.com/bookfiles/461/10046116316.shtml
如第二篇文章所说:
递归思想
假设一个问题有一个或多个分支条件,而其中的某些子任务是最开始时试图解决的同一问题的简单版本,那么这些子任务通过递归调用来解决。
函数在进行递归调用时,必须要有一个或多个分支条件,在这些分支条件内,整个计算不需要递归来完成。这些没有递归的分支条件称为停止条件或基本条件。
设计递归算法,一定要有结束的条件,同时找到反复出现的一个模式。
附上的Java代码中的代码单元来自上两篇文章,但是我综合在了一起
- //计算斐波那契数列
- classtest1{
- intfunc(intx){
- if(x>2)
- return(func(x-1)+func(x-2));
- else
- return1;
- }
- }
- //计算若一头小母牛,从出生起第四个年头开始每年生一头母牛,按次规律,第n年时有多少头母牛?
- classtest2{
- intcattle(intn){
- if(n<=0)return0;
- if(n<=3)return1;
- returncattle(n-1)+cattle(n-3);//此处是递归要好好理解。
- }
- }
- //纵向输出数字的每位
- classtest3{
- voidwrite_vertical(intnumber){
- if(number<10)
- System.out.println(number);//Writetheonedigit.
- else{
- write_vertical(number/10);//Writeallbutthelastdigit.
- System.out.println(number%10);//Writethelastdigit.
- }
- }
- }
- publicclassrecursion{
- publicstaticvoidmain(String[]args){
- intx1=1;
- intsum=0;
- intn=5;
- test1t1=newtest1();
- for(inti=1;i<=n;i++){
- x1=t1.func(i);
- System.out.print(x1+":");
- sum=sum+x1;
- }
- System.out.println("sum="+sum);
- intcatYear=15;
- test2t2=newtest2();
- System.out.println("test2:"+t2.cattle(catYear));
- inttestNumber=1234;
- test3t3=newtest3();
- System.out.println("test3:"+testNumber);
- t3.write_vertical(testNumber);
- }
- }
递归算法详解与实例
本文深入探讨递归算法的基本概念及其应用,并通过斐波那契数列、母牛繁殖模型及数字纵向输出等实例,具体展示递归算法的设计与实现过程。
580

被折叠的 条评论
为什么被折叠?



