假設要把長度爲 n 釐米的木棒切分爲 1 釐米長的小段,可是 1 根木棒只能由 1 人切分,當木棒被切分爲 3 段後,能夠同時由 3 我的分別切分木棒( 圖2 )。
求最多有 m 我的時,最少要切分幾回。譬如 n = 8,m = 3 時以下圖所示,切分 4 次就能夠了。
ide
問題1
求當 n = 20,m = 3 時的最少切分次數。
問題2
求當 n = 100,m = 5 時的最少切分次數。函數
package main import "fmt" func cutbar(n,m,current int)int{ if current >= n{ return 0 }else if current <= m{ return 1 + cutbar(n,m,current*2) }else { return 1 + cutbar(n,m,current+m) } } func main(){ times := cutbar(20,3,1) fmt.Println(times) times2 := cutbar(100,5,1) fmt.Println(times2) }
這裏使用遞歸函數較爲方便,n是棍子釐米數,m是人數,current是當前棍子的段數。code