Java實現遞歸 斐波那契數列 階乘

Java實現遞歸 斐波那契數列 階乘

階乘

 /**
	 * 使用遞歸算法求階乘
	 * 求階乘 
	 * 		5!=5*4*3*2*1;		
	 * 
	 * 		1=1;
	 * 		2!=2*1!;
	 * 		3! = 3*2!;
	 * 		4! = 4*3!;
	 * 		n! =n*(n-1)!
	 * 1.首先歸納找到算法的規律
	 * 2.遞歸本質就是方法自己調用自己
	 * 3.必須有一個遞歸終止的條件(不讓調用自己)
	 * 4.遞歸再自己掉自己的時候,傳遞的參數在不斷髮生變化
	 * @param num
	 * @return
	 */
	//遞歸
	function digui(num){
//臨界條件
		if(num == 1|| num ==0){
			return 1;		
		}
		//每次都讓num * 遞歸(num-1),直到num-1=1的時候,到達臨界條件,然後結束
		return num*digui(num-1);
	
	}
	alert(digui(6));

如圖:4!
在這裏插入圖片描述
在這裏插入圖片描述
斐波那契數列

/**
 * 斐波那契數列 1 1 2 3 5 8 13 21 34 55
 * 	index 是從1開始,第幾個數
 *  當index <=2  num = 1
 *  當index >2 (index-1) + (index-2)
 * 
 * @param index
 * @return 根據第幾個數,返回這個數的值
 */
//使用遞歸算法生成斐波那契數列
function feibo(num){

	if(num == 1|| num==2){
		return 1;		
	}

	//num的前邊兩個數的斐波那契數列相加
	
	return feibo(num-2)+feibo(num-1);
}

alert(feibo(10));

遞歸在項目中運用 省市縣

<script>
//省市縣

var menuArr =[
{ id:1, pId:0, name:"中國"},
{ id:11, pId:1, name:"北京"},
{ id:111, pId:11, name:"朝陽"},
{ id:112, pId:11, name:"海淀"},
{ id:113, pId:11, name:"豐臺"},
{ id:114, pId:111, name:"朝陽111"},
{ id:12, pId:1, name:"山西"},
{ id:121, pId:12, name:"太原"},
{ id:122, pId:12, name:"臨汾"},
{ id:123, pId:122, name:"堯都區"},
{ id:124, pId:123, name:"蒲縣"},
{ id:13, pId:1, name:"河南"},
{ id:2, pId:0, name:"美國"}

];
var menuHtml = "";
//構建樹形菜單
function buildMenu(pid){
	//調用判斷是否有字節點的方法
	var childArr = getChild(menuArr,pid);

//如果數組長度大於0,說明有孩子,然後進行拼接ul和li
	if(childArr.length>0){
		menuHtml += "<ul>";

//進行循環數組,拼接li
		for (var i=0;i<childArr.length ;i++ )
		{
			menuHtml += "<li>";
			//拼接name
			menuHtml += childArr[i].name;
			//進行遞歸,判斷該id下是否還有子節點,如果有,繼續在該節點拼接ul li
			buildMenu(childArr[i].id)
			menuHtml += "</li>";
		}
		menuHtml += "</ul>";	
	}

	return menuHtml;
}

//獲取子節點,如果該pId有孩子,就存放到數組中
function getChild(arr,pid){

	//用來存放pid子節點的集合
	var childArr = [];
	for (var i=0;i<arr.length;i++)
	{
		//如果參數中的pId和數組中的父Id相等,說明該參數傳過來的pid下有子節點,並放到數組中
		if(pid == arr[i].pId){
			childArr.push(arr[i]);				
		}
	}
	//將有子節點的數組返回
	return childArr;
}

//調用方法
buildMenu(0);
//初始化方法,把 menuHtml給了頁面dix進行展示
function init(){
document.getElementById("div1").innerHTML=menuHtml;

}
 //-->
 </script>
 <body onload='init()'>
  <div id="div1"></div>
 </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章