斐波那契数列
斐波那契数列的计算,递归和非递归
int aa(int num)
{
if(num <= 0) return 0;
if(num == 1 || num == 2) return 1;
return aa(num-1)+aa(num-2);
}
int AA(int num)
{
if(num <= 0) return 0;
if(num == 1 || num == 2) return 1;
int nPre = 1;
int nEnd = 1;
int nCount = 0;
for(int i=0;i<num-2;i++)
{
nCount = nPre+nEnd;
nPre = nEnd;
nEnd = nCount;
}
return nCount;
}
青蛙跳井,一次可以跳一层或者两层,也就是说n等于1时有一种情况,n等于2时有两种情况,其他形式类似于斐波那契数列
int aa(int num)
{
if(num <= 0) return 0;
if(num == 1) return 1;
if(num == 2) return 2;
return aa(num-1)+aa(num-2);
}
int AA(int num)
{
if(num <= 0) return 0;
if(num == 1) return 1;
if(num == 2) return 2;
int nPre = 1;
int nEnd = 2;
int nCount = 0;
for(int i=0;i<num-2;i++)
{
nCount = nPre+nEnd;
nPre = nEnd;
nEnd = nCount;
}
return nCount;
}
青蛙跳井,一次可以跳一层或者n层,先写递归,函数返回值会是aa(num-1)+aa(num-2)+...+aa(0),而aa(0)代表一下跳到了头,这是一次情况,并且还要注意函数第一次的参数等于0时要是0,
int aa(int num)
{
if(num <= 0) return 0;
if(num == 1) return 1;
if(num == 2) return 2;
int nCount = 3;
int nNow;
for(int i=0;i<num-2;i++)
{
nNow = nCount+1;
nCount = nNow+nCount;
}
return nNow;
}
int AA(int num)
{
static int index = 1;
if(num <= 0)
{
if(num < 0) return 0;
if(index == 1)
return 0;
else
return 1;
}
if(num == 1) return 1;
index = 0;
int nCount = 0;
for(int i=0;i<num;i++)
{
nCount += AA(i);
}
return nCount;
}