1620-7 唐大智《2016年11月5日》[连续第三十六天总结]
标题:函数调用继续前进,题目练习
关键词:函数调用80%,题目练习二个;
内容:(A)
(1)函数的嵌套调用:c++程序中任一函数的定义均是独立的,函数之间是平等且平行的,因此不允许在函数体内再定义另一个函数,即不允许嵌套定义。但C++允许函数的嵌套调用,即可在函数体内调用另一个函数,甚至调用去自身。
(2)函数的递归调用:C++中一个函数可以在它的函数体内直接调用自身或通过其他函数间接调用自身,这种函数调用方式称为递归调用,在递归调用过程中,主调函数同时又是被掉函数。
(B)题目:
(1)计算sum=1^k+2^k+……+n^k,并以n=6,k=5进行测试。
#include<iostream.h>
const int k(5);
const int n(6);
int sum(int,int),powers(int m,int n); //sum函数和powers函数调用在前,定义在后,因此需要做原型说明
void main()
{
cout<<"sum of "<<k<<"powers of integers from 1 to"<<n<<"=";
cout<<sum(k,n)<<endl;
}
int sum(int k,int n) //累加求和函数
{
int s=0; //变量s作为累加器,其初始值应该设置为0
for(int i;i<=n;i++)
s+=powers(i,k);
return s;
}
int power(int i,int k)
{
int j,p=1; //powers函数中变量p为累加器,初始值设置为1
for(j=1;j<=k;j++)
p*=i;
return p;
}
(2)用递归法求n!。
#include<iostream.h>
long int f(int n) //求n!的递归函数
{
int b;
if(n==1||n=0) //递归条件结束
b=1;
else
b=n*f(n-1); //递归调用函数f
cout<<"n"<<n<<'\t'<<"n!="<<b<<endl;
return b; //返回n!的值
}
void main()
{
int a;
cout<<"请输入一个整数:";
cin>>a; //输出a!的值
cout<<a<<"!="<<f(a)<<endl;
}
(C)明日计划:去南区涨见识,帮忙,整理下思想,继续接下来的学习。