scala版本
package ms
import scala.collection.mutable.ListBuffer
/**
* 第21题(数组)
2010年中兴面试题
编程求解:
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
使其和等于 m ,要求将其中所有的可能组合列出来.
*/
class ExtractSum{
var result:ListBuffer[Int]=ListBuffer[Int]()
def compute(s:Int,n:Int):Unit={
var sum=s;
var num=n;
if(sum==0){
for(r<-result)
print(r+",")
println()
}
if(num>sum){
num=sum;
}
if(num<=0){
return;
}
result.append(num)
compute(sum-num,num-1)
if(result.length>0){
result.remove(result.length-1)
compute(sum,num-1)
}
}
}
object MicroSoft021 {
def main(args: Array[String]): Unit = {
val c=new ExtractSum();
c.compute(10,6)
}
}