1:求阶乘:
递归实现:
#include <iostream>
using namespace std;
long Fact(int n){
if(n==0){
return 1;
}else{
return n*Fact(n-1);
}
}
int main()
{
int n;
cin >> n;
cout <<Fact(n) <<endl;
return 0;
}
非递归实现:
#include <iostream>
using namespace std;
long Fact(int n){
int t=1,s=1;
for(t=1;t<=n;t++){
s=s*t;
}
return s;
}
int main()
{
int n;
cin >> n;
cout <<Fact(n) <<endl;
return 0;
}
2:斐波那契数列:
递归实现:
#include <iostream>
using namespace std;
long Fib(int n){
if(n==1||n==2){
return 1;
}else{
return Fib(n-1)+Fib(n-2);
}
}
int main()
{
int n;
cin >> n;
cout <<Fib(n) <<endl;
return 0;
}
非递归实现:
#include <iostream>
using namespace std;
long Fib(int n){
if(n==1||n==2){
return 1;
}else{
int t1=1,t2=1,t3;
int i;
for(i=3;i<=n;i++){
t3=t1+t2;
t1=t2;
t2=t3;
}
return t3;
}
}
int main()
{
int n;
cin >> n;
cout <<Fib(n) <<endl;
return 0;
}