exp5_1.cpp

来自「高等教育出版社出版的C++程序设计同步实验范例 希望对用这本教材得同学有点帮助」· C++ 代码 · 共 28 行

CPP
28
字号
/*函数嵌套调用是在被调用的函数内再调用其它函数,而递归调用是在被调函数内调用自身。
嵌套调用的层数没有限制,而递归调用函数必须包含使递归终止的语句。
	范例:求n个元素取m个的组合数:C(m,n)= n!/(m!*(n-m)!)
[分析] 求组合数要用到求阶乘,将求阶乘定义为一个函数,在求组合数的函数中嵌套调用阶乘函数。
由于n!=n*(n-1)!,求阶乘是一个典型的递归算法,在此用递归方法实现。
*/
#include <iostream.h>
long com(int ,int), fac(int); //原型声明
void main(){
	int m,n;
	cout<<"Please input two numbers m,n(m<n): \n";
	cin>>m>>n; 
	if(m<=n)	cout<<"C(m,n)="<<com(m,n)<<endl;
	else cout<<"Input Error!\n";
	return;
}
long com(int i,int j){
	long cmb; 		 		// att:  A
	cmb= fac(j)/(fac(i)*fac(j-i)); //在com函数内嵌套调用fac函数
	return cmb;
}
long fac(int i){
	long fcl;					// att:B
	if(i==0||i==1) fcl =1;    			//使递归结束的语句
	else fcl = i*fac(i-1); 		//递归调用
	return fcl;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?