1.求一个数的阶乘n!:
#include<iostream>
using namespace std;
int fac(int val);
int main(){
int val;
cout<<"input a number:"<<endl;
cin>>val;
cout<<"val! is "<<fac(val)<<endl;
}
int fac(int val){
if(val==1||val==0)
return 1;
else if(val<0){
cout<<"input error!"<<endl;
}
return val*fac(val-1);
}
2.Fibonacci数列(斐波那契数列)
1,1,2,3,5,8,13,21,34。。。。。。。。
#include<iostream>
#include<iomanip>
using namespace std;
int Fibonacci(int n);
int main(){
int n,cont=0;
cout<<"input a number:"<<endl;
cin>>n;
for(int ix=0;ix!=n;++ix){
cout<<setw(12)<<Fibonacci(ix);
++cont;
if(cont%6==0){
cout<<endl;
cont=0; //每七个一行
}
}
return 0;
}
int Fibonacci(int n){
if(n==0||n==1)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
3.Ackerman函数
#include<iostream>
using namespace std;
int Ackerman(int n,int m);
int main(){
int n,m;
cout<<"input two numbers:"<<endl;
cin>>n>>m;
for(int ix=0;ix<=n;ix++)
for(int iix=0;iix<=m;iix++)
cout<<"Ackerman["<<ix<<","<<iix<<"]="<<Ackerman(ix,iix)<<endl;
return 0;
}
int Ackerman(int n,int m){
if(n==1&&m==0)
return 2;
else if(n==0&&m>=0)
return 1;
else if(n>=2&&m==0)
return n+2;
else if(n>=1&&m>=1)
return Ackerman( Ackerman(n-1,m),m-1);
else
cout<<"Data error!"<<endl;
} //有大小限制。
4 全排列问题
#include<iostream>
using namespace std;
void Swap(char &m,char &n)
{
char temp;
temp=m;
m=n;
n=temp;
} //交换m和n的值并带到主函数中
void pailie(char a[],int q,int z)
{
if(q==z)
{
for(int j=1;j<=z;j++)
cout<<a[j];
cout<<endl;
} //如果要排列的数据只有一个了,就输出数列
else
{
for(int i=q;i<=z;i++)
{
Swap(a[q],a[i]); //将第一个元素和第i个交换
pailie(a,q+1,z); //递归排列下标从q+1到z的数列
Swap(a[q],a[i]); // 恢复现场
}
}
}
int main()
{
int yongli;
int number;
cin>>yongli; //用例个数
for(int i=1;i<=yongli;i++)
{
char a[100];
cin>>number;
for(int j=1;j<=number;j++) cin>>a[j];
pailie(a,1,number);
cout<<endl;
}
return 0;
}