#include <iostream>
using namespace std;
int fibo(int n, int x, int y)
{
if(x+y>n) return y;
else return fibo(n,y,x+y);
}
void desc(int n)
{
if(n>0)
{
int f=fibo(n,0,1);
cout<<f<<" ";
desc(n-f);
}
}
int main()
{
int n;
cin>>n;
desc(n);
return 0;
}
sau (varianta ineficienta)
#include<fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int fib(int n)
{
if(n==0 || n==1) return 1;
else return fib(n-1)+fib(n-2);
}
int fibm(int i, int n)
{
if(fib(i)>n) return fib(i-1);
else return fibm(i+1,n);
}
void gen(int n)
{
if(n>0)
{
int f=fibm(1,n);
fout<<f<<" ";
gen(n-f);
}
}
int main()
{
int n;
fin>>n;
gen(n);
fin.close();
fout.close();
return 0;
}
|