递归算法和经典递归例子
生活随笔
收集整理的這篇文章主要介紹了
递归算法和经典递归例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、什么叫遞歸
? 遞歸函數就是直接或間接調用自身的函數,也就是自身調用自己。
二、一般什么時候使用遞歸?
? 遞歸是常用的編程技術,其基本思想就是“自己調用自己”,一個使用遞歸技術的方法即是直接或間接的調用自身的方法。遞歸方法實際上體現了“以此類推”、“用同樣的步驟重復”這樣的思想。? ??還有些數據結構如二叉樹,結構本身固有遞歸特性;此外,有一類問題,其本身沒有明顯的遞歸結構,但用遞歸程序求解比其他方法更容易編寫程序。
三、經典遞歸算法
?1、遞歸階乘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); }2、漢諾塔問題
public static void hanio(int n,char a,char b,char c){8 if(n==1)9 System.out.println("移動"+n+"號盤子從"+a+"到"+c); 10 else{ 11 hanio(n-1,a,c,b);//把上面n-1個盤子從a借助b搬到c 12 System.out.println("移動"+n+"號盤子從"+a+"到"+c);//緊接著直接把n搬動c 13 hanio(n-1,b,a,c);//再把b上的n-1個盤子借助a搬到c 14 } 15 }3.判定一系列字符串中是否有相同的內容
public class Crf{public static void main(String[] args) {String[] a = {"a1","a2","a3","b3","c","b","33","33"};fun(0, a);}public static void fun(int n,String[] a){for(int i = n; i < a.length-1; i++){System.out.println(n+" "+(i+1));if(a[n].equals(a[i+1])){System.out.println("存在相同字符"); System.out.println(a[n]); }}n++;fun(n,a);} }總結
以上是生活随笔為你收集整理的递归算法和经典递归例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kubenetes中port、targe
- 下一篇: windows下使用MinGW+msys