有关形参和实参的说明:
1.实参和形参的类型应相同,否则实参要按照形参的类型进去转换
2.实参对形参的数据传递为“值传递”,是单向传递的(实参 --> 形参)
函数的递归调用:
在调用一个函数的过程中,又出现直接或间接地调用该函数本身的过程,称为函数的递归调用
递归调用的条件:①有递归调用的过程 ②限定有限次数、有终止的调用
#include <iostream>
using namespace std;
int func(int num)
{
if(num == 1)
{
return 10;
}
else
{
return 2 + func(num - 1);
}
}
int main()
{
int num; cin >> num;
int t = func(num);
cout << t << endl;
return 0;
}
#include <iostream>
using namespace std;
int func(int n)
{
if(n == 1 || n == 2)
{
return n;
}
else
{
return n * func(n - 1);
}
}
int main()
{
int n; cin >> n;
int t = func(n);
cout << t << endl;
return 0;
}
函数重载:
一个函数名,可以多次使用
并分别对每次定义的函数,赋予不同的含义
#include <iostream>
using namespace std;
int max(int a, int b) // 若为2个参数的情况
{
return (a > b ? a : b);
}
int max(int a, int b, int c) // 若为3个参数的情况
{
return (a > b ? (a > c ? a : c) : (b > c ? b : c));
}
int main()
{
int a,b,c; cin >> a >> b >> c;
cout << max(a, b) << endl;
cout << max(a, b, c) << endl;
return 0;
}
C++存储类别:
auto:函数中的局部变量,若不用static加以声明,则编译系统是自动地为他们分配存储空间的
函数调用结束后即释放
static:定义的变量在程序整个运行期间都不释放,保留原值
这样在下一次调用该函数时,该变量可以保留上一次调用结束的值
register
extern
#include <iostream>
using namespace std;
int func(int n)
{
if(n == 1)
{
return 1;
}
else
{
return n * func(n - 1);
}
}
int main()
{
int num; cin >> num;
for(int i = 1; i <= num; i++)
{
cout << i << "! = " << func(i) << endl;
}
return 0;
}