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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章