递归:斐波那契数列
正确的递归:
- 1 2 3 5 8 13
## n=4
#include<bits/stdc++.h>
using namespace std;
int n;
int fact(int k)
{
if(k==1||k==2)
return k;//fact(1)=1,fact(2)=2;
else
return fact(k-1)+fact(k-2);
}
int main()
{
int c;
cin>>n;
c=fact(n);
cout<<c;
}
错误的递归:
#include<bits/stdc++.h>
using namespace std;
int n;
int fact(int x,int y,int k)
{
if(k==1||k==2)
return k;//fact(3,5,2)=2
else
return fact(y,x+y,k-1)//fact(2,3,3),fact(3,5,2)里面的数都变了,不能用递归了
int main()
{
cin>>k;
int c=fact(1,2,n);
cout<<c;
//n=4,结果为2