1.编写函数求两个整数的最大公约数和最小公倍数。
#include <iostream>
using namespace std;
int fn(int i,int j) {
int m,n=1;
while(i*n%j!=0){
n++;
}
return i*n;
}
int main(int argc, char** argv) {
int i,j,x,y;
cout<<"请输入一个整数:"<<endl;
cin>>i;
cout<<"请输入另一个整数:"<<endl;
cin>>j;
x=fn(i,j);//求最小公约数的函数
y=i*j/x;
cout<<i<<"和"<<j<<"的最大公约数是:"<<y<<endl;
cout<<i<<"和"<<j<<"的最小公倍数是:"<<x<<endl;
return 0;
}
2.用递归的方法编写函数求Fibonacci级数
int fib(int n){
if(n<3){
return 1;
}
else{
return (fib(n-1)+fib(n-2));
}
}
int main(){
int n;
cin>>n;
int m=fib(n);
cout<<"n级斐波那契数是"<<m<<endl;
}
3.编写递归函数getPower计算x^y,在同一个程序中针对整形和实形实现两个重载的函数
int getPower(int x,int y){
if(y==1)
return x;
else if(y==0)
return 1;
else if(y<0)
return 0;
else
return (x*getPower(x,y-1));
}
double getPower(double x,int y){
if(y==1)
return x;
else if(y==0)
return 1;
else if(y<0)
return 1/getPower(x,-y);
else
return (x*getPower(x,y-1));
}
int main(){
int a,i;
double b;
int m;
double n;
cout<<"请输入两个数以及它们的指数"<<endl;
cin>>a;
cin>>b;
cin>>i;
m=getPower(a,i);
n=getPower(b,i);
cout<<m<<endl;
cout<<n<<endl;
}
4.当函数发生递归调用时,同一个局部变量在不同递归深度上可以同时存在不同的取值,这在底层是怎么做到的?
在对一个函数多次调用中,编译器会对函数的形参和局部变量分配不同的空间,它们互不影响。