问题 问答题

请编写一个函数comm(int n,int k),该函数将用递归算法计算从n个人中选择k个人组成一个委员会的不同组合数,由n个人里选k个人的组合数=由(n-1)个人里选k个人的组合数+由(n-1)个人里选(k-1)个人的组合数。 注意:部分源程序已存在文件test41_2.cpp中。 请勿修改主函数main和其他函数中的任何内容,仅在函数comm的花括号中填写若干语句。 源程序文件test41-2.cpp清单如下: #include<iostream.h> int comm(int n, int k) { } void main ( ) {int n=7, k=3;cout<<"n=7,k=3"<<endl;cout<<comm(n,k)<<endl; }

答案

参考答案:

解析:int comm(int n, int k) { if(k>n) return 0; else if(n==k||k==0) return 1; else return comm(n-1,k)+comm(n-1,k-1); } 本题考查的是考生对简单的递归函数的应用。递归函数是算法设计中比较经典的一种,它主要应用数学的递推公式进行反复的迭代计算并最终得到正确答案,在编程上体现为在函数体内部对自身的调用。本题的大体思路为:递归的结束条件为n=k或者k=0,否则就递推的调用公式右端的两项继续训算,直到满足结束条件再逐层返回。

单项选择题
单项选择题 B1型题