骨牌铺路
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int);
int main()
{
cin>>n;
cout<<f(n);
return 0;
}
int f(int n){
if(n==1) return 1;
if(n==2) return 2;
if(n==3) return 4;
return f(n-1)+f(n-2)+f(n-3);
}
统计每个月兔子的总数
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int);
int main()
{
cin>>n;
cout<<f(n);
return 0;
}
int f(int n){
if(n==1) return 1;
if(n==2) return 1;
return f(n-1)+f(n-2);
}
求s的值
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int);
int main()
{
n=0;
cout<<f(n);
return 0;
}
int f(int n){
if(n>=5000) return n;
sum++;
n=n+sum;
return f(n);
}
求多项式的值
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int),f1(int);
int main()
{
cin>>n;
double s=0;
for(int i=1;i<=n;i++){
s=s+1.0*f(i)/f1(i);
}
cout<<fixed<<setprecision(3)<<s;
return 0;
}
int f(int n){
if(n==1||n==2) return 1;
return f(n-1)+f(n-2);
}
int f1(int n){
if(n==1) return 1;
if(n==2) return 2;
return f1(n-1)+f1(n-2);
}
数列求和
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int);
int main()
{
cin>>n;
cout<<f(n);
return 0;
}
int f(int n){
if(n==1) return 1;
sum++;
n=n+sum;
m=m+n;
return f(n);
}
爬楼梯
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int i;
int f(int);
int main()
{
int a[1000];
for(i=0;a[i]!=0;i++){
cin>>a[i];
}
for(i=0;a[i]!=0;i++){
cout<<f(a[1000]);
}
return 0;
}
int f(int a[1000]){
if(a[i]==1) return 1;
if(a[i]==2) return 1;
return f(n-1)+f(n-2);
}
PELL数列
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int);
int main()
{
cin>>n;
int a[1000];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
cout<<f(a[i])<<endl;
}
return 0;
}
int f(int n){
if(n==1) return 1;
if(n==2) return 2;
return (2*n-1+n-2)%32767;
}
斐波那契数列
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0;
int f(int);
int main()
{
cin>>n;
int a[1000];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
cout<<f(a[i]);
}
return 0;
}
int f(int n){
if(n==1) return 1;
if(n==2) return 1;
return f(n-1)+f(n-2);
}