#Z0320. 函数间的相互调用
函数间的相互调用
No testdata at current.
除了可以在主函数调用其他函数以外,我们还可以在自定义的函数里调用其他函数:
void output1() {
cout << "1" << endl;
return;
}
void output2() {
cout << "2" << endl;
output1();
return;
}
void output3() {
cout << "3" << endl;
output2();
return;
}
在这个程序里,通过调用output3函数,首先输出了一行3,并调用了output2函数;在output2函数里,首先输出了一行2,并调用了output1函数;在output1函数里,输出了一行1。
最终,当我们调用output3函数后,程序会输出如下结果:
32
1
在刚才的例子中,函数之间的调用形如“一条链”:
扩展思考:如果我们要输出从 nn 到 11 这 nn 行整数,应该怎么改前面的程序呢?
在这样的一系列函数间的调用过程里,还可以进行返回值的传递和使用。
int frac1() {
return 1;
}
int frac2() {
return frac1() * 2;
}
int frac3() {
return frac2() * 3;
}
int frac4() {
return frac3() * 4;
}
当我们调用frac4的时候,实际上是在计算 4!=1×2×3×4。
除了可以传递返回值,还可以传递函数的参数:
void output1(int n) {
cout << n << endl;
}
void output2(int n) {
cout << n << endl;
output1(n - 1);
}
void output3(int n) {
cout << n << endl;
output2(n - 1);
}
当我们调用output3(5)的时候,会经历如下的调用过程:
调用output3(5)
输出5
调用output2(4)
输出4
调用output1(3)
输出3
返回output2
返回output1
返回开始的调用处