package algorithm
import java.io.File
object RecursiveApp {
def main(args: Array[String]): Unit = {
"""
|递归的使用:适合于树形结构的遍历
|比较递归方式和循环方式的区别
""".stripMargin
var s0 = System.currentTimeMillis()
val res: Int = fabonacciNumber(30)
println(res)
println("recuise ops cost time "+(System.currentTimeMillis()-s0)/100+"s")
var s1 = System.currentTimeMillis()
println(fabonacci_ori(30))
println("original ops cost time "+(System.currentTimeMillis()-s1)/100+"s")
val path = "C:\\Users\\Administrator\\Desktop\\test\\NIFI"
val file = new File(path)
getFileList(file)
}
/**
* 斐波那契数的递归实现
* @param n
* @return
*/
def fabonacciNumber(n:Int):Int={
if(n==1||n==2){
return 1
}else{
fabonacciNumber(n-1) + fabonacciNumber(n-2)
}
}
/**
* 斐波那契数的循环实现
* @param n
* @return
*/
def fabonacci_ori(n:Int):Int={
var num1 = 1
var num2 =1
var fac = 0
for(i <- 2 until(n)){
fac = num1 + num2
num1 = num2
num2 = fac
}
fac
}
/**
* 使用递归方式遍历某个文件名称信息
* @param file
*/
def getFileList(file:File){
val files: Array[File] = file.listFiles()
for(i <- 0 until(files.length)){
if(files(i).isFile()){
println(files(i).getName())
}else{
getFileList(files(i))
}
}
}
}