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; }