谈递归

xiaoxiao2025-11-10  5

小老弟 最近准备考研! 之前垃圾的算法只是可算时要被重新提起(里面有一个错别字 是找到 我转红包哦  限一个人)哈哈

结合前辈们的讲解 我尝试发表一下拙见  欢迎大家补充

--------------------- 参考资料 ==========感谢以下作者 如有侵权 请联系我===== 原文:https://blog.csdn.net/ten_sory/article/details/64126341   

     https://blog.csdn.net/ikownyou/article/details/65633581

递归两个要素

1.递归边界

2.递归的逻辑——递归"公式"

递归的过程一定有参数的变化,并且参数的变化,和递归边界有关系.

在难度较大的题目中,这两者均不容易直接得到.

递归的种种问题,也许理解的同学可能可以用一句话解释清楚,但是不理解的同学再怎么说也没办法理解.

下面通过几个简单的例子【体会】一下递归,先从【感性】的角度理解递归.

 

先摆上例子 1.递归求和1+2+3+.....+n

public static Integer recursionSum(Integer n){    if(n>0){       return n+recursionSum(n-1);    }else{       return 0;    } } 2.递归阶乘n! = n * (n-1) * (n-2) * ...* 1(n>0)

public static Integer recursionMulity(Integer n){    if(n==1){       return 1;    }    return n*recursionMulity(n-1); } 3.河内塔问题

package arithmeticDesign; //汉罗塔的设计 import java.util.Scanner;

public class TowerOfHanoi {     static int count=1;//用来记录生成步骤的条数     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner s=new Scanner(System.in);         int n=s.nextInt();         move(n,"A","B","C");     }     /**      * 将n个盘子从A移到B,C作为辅助的柱子      * @param n 原来有多少个盘      * @param A 原来放置盘子的柱子      * @param B B柱子      * @param C C柱子      */     public static void move(int n,String A,String B,String C) {         if(n==1){             System.out.println("第"+count+++"步:"+"将第1个盘从"+A+"移到"+B);         }             else{             move(n-1,A,C,B);             System.out.println("第"+count+++"步:"+"将第"+n+"个盘从"+A+"移到"+B);             move(n-1,C,B,A);         }     }; } !

4.判定一系列字符串中是否有相同的内容

public static boolean fun(int n,String[] a){    boolean b = false;    if(n == a.length){       b = true;    }else{       for(int i = n; i < a.length-1; i++){          System.out.println(n+"    "+(i+1));          if(a[n].equals(a[i+1])){             return false;          }       }       n++;       fun(n,a);    }    return b; }

//总结 关键两个!!!!1 找到能够让递归函数返回的条件 2 分治法 每层逻辑(调用自身即可)

 

 

转载请注明原文地址: https://www.6miu.com/read-5039383.html

最新回复(0)