實作遞迴(1) – n!
最近在整理資料結構&算法的資料,
所以試著用各種語言將sample code記錄下來,
練習之餘順便撿起一些很久沒碰的語言。
歸納:
n!= \begin{cases} 1,\ where\ n = [0,1]\\ n*(n-1)!,\ where\ n > 1 \end{cases}
Golang
遞迴版本:
package main
import "fmt"
//遞迴版本n!
func factorial(n int) int {
if n == 0 || n == 1 {
return 1
}
return n * factorial(n-1)
}
func main() {
fmt.Println("input n:")
var n int
fmt.Scanln(&n)
fmt.Printf("%d! = %d\n", n, factorial(n))
}
改寫成迭代版本(Iteration, Non-recursive):
//迭代版本n!
func factorial(n int) int {
result := 1
for i := 2; i <= n; i++ {
result *= i
}
return result
}
Filed under: 演算法 - @ 2021 年 6 月 25 日 上午 10:01