嗯,打字不够快,写贴时没有楼上的贴子。
不过楼上写的有点复杂,给个简约版的。
递归方法(效率不行):
int fun(int n)
{
if(n < 4) return 1;
return fun(n - 1) + fun(n - 3);
}
迭代方法(还好):
int fun(int n)
{
int i, f1, f2, f3, f;
f1 = f2 = f3 = f = 1;
for(i = 4; i <= n; i++)
{
f = f1 + f3;
f1 = f2;
f2 = f3;
f3 = f;
}
return f;
}
不过楼上写的有点复杂,给个简约版的。
递归方法(效率不行):
int fun(int n)
{
if(n < 4) return 1;
return fun(n - 1) + fun(n - 3);
}
迭代方法(还好):
int fun(int n)
{
int i, f1, f2, f3, f;
f1 = f2 = f3 = f = 1;
for(i = 4; i <= n; i++)
{
f = f1 + f3;
f1 = f2;
f2 = f3;
f3 = f;
}
return f;
}
重剑无锋,大巧不工