递归算法和经典递归例子
生活随笔
收集整理的這篇文章主要介紹了
递归算法和经典递归例子
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、什么叫遞歸
? 遞歸函數(shù)就是直接或間接調(diào)用自身的函數(shù),也就是自身調(diào)用自己。
二、一般什么時(shí)候使用遞歸?
? 遞歸是常用的編程技術(shù),其基本思想就是“自己調(diào)用自己”,一個(gè)使用遞歸技術(shù)的方法即是直接或間接的調(diào)用自身的方法。遞歸方法實(shí)際上體現(xiàn)了“以此類(lèi)推”、“用同樣的步驟重復(fù)”這樣的思想。? ??還有些數(shù)據(jù)結(jié)構(gòu)如二叉樹(shù),結(jié)構(gòu)本身固有遞歸特性;此外,有一類(lèi)問(wèn)題,其本身沒(méi)有明顯的遞歸結(jié)構(gòu),但用遞歸程序求解比其他方法更容易編寫(xiě)程序。
三、經(jīng)典遞歸算法
?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、漢諾塔問(wèn)題
public static void hanio(int n,char a,char b,char c){8 if(n==1)9 System.out.println("移動(dòng)"+n+"號(hào)盤(pán)子從"+a+"到"+c); 10 else{ 11 hanio(n-1,a,c,b);//把上面n-1個(gè)盤(pán)子從a借助b搬到c 12 System.out.println("移動(dòng)"+n+"號(hào)盤(pán)子從"+a+"到"+c);//緊接著直接把n搬動(dòng)c 13 hanio(n-1,b,a,c);//再把b上的n-1個(gè)盤(pán)子借助a搬到c 14 } 15 }3.判定一系列字符串中是否有相同的內(nèi)容
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);} }總結(jié)
以上是生活随笔為你收集整理的递归算法和经典递归例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: kubenetes中port、targe
- 下一篇: 如何把qq挂到云服务器,云服务器挂QQ软