/**递归函数,在函数内部再次调用自己 * 解决可以被分解为类例子问题的问题 * 组成 * 1基本情况,最小问题的答案 * 2.递进情况,调用自己去解决问题 */ object TestFuRecursive { // def fn():Unit={ // println("fn...") // fn() // } // //定义一个函数,求1—n的和 // def sum(n:Int)={ // var s=0 // for (i<-1 to n){ // s+=1 // } // s // } // def sum(n: Int): Int = { println(n) //基本情况 if (n == 1) { 1 } else{ //2递归情况,再次要用自己去解决问题 return n + sum(n - 1) // } //} // def main(args: Array[String]): Unit = { var s=sum(10) println(s) } } //定义一个函数,求1*2*3*...*n def mul(n:Int):Int={ if(n ==0){ 1 }else{ mul(n-1)*n } } def main(array: Array[String]):Unit={ var s=mul(5)//5*4*3*2*1=120 println(s) }
//定义一个函数,计算菲皮那契数列的第n项 //费皮那契数列{:1 1 2 3 5 8 13 21... //规律: //1.基本情况 f(0)=1;f(1)=1 //2 ,递进情况 f(n)=f(n-1)+f(n-2) def feb(n:Int):Unit={ //1.基本情况 if(n == 0) 0 else if (n == 1) 1 else feb(n-1)+feb(n-2) } def main(array: Array[String]):Unit={ var s=feb(5)// println(s) }