最近在做综测助手项目的时候,想到这样一个问题:
【三个】科目,每个科目有【优良中差屌】五种情况,那么一共有多少种情况?
(注:“优优屌” 和 “优屌优” 算一种情况,就是不考虑顺序)
一开始以为是5^3, 但是细想并不是,最后用程序递归结局这个问题
n个科目,m个类别,f(n,m)为问题的解
那么
f(n,m)= Σ f(n-i,m-1) ( i 从 0 到 n)
很快把代码写出来,结果是35:
(go语言实现)
package main
import (
"log"
)
// n个科目 , m个类型
func f(n int, m int) (s int) {
if m == 1 {
return 1
}
// f(n,m)= Σ f(n-i,m-1) ( i 从 0 到 n)
for i := 0; i <= n; i++ {
s+=f(n-i,m-1)
}
return s
}
func main() {
log.Println(f(3, 5))
}