您的位置:首页 > 其它

fibo数求法(递归版本) -- 作者小泽

2015-07-05 01:50 176 查看
fibonacci数的递归求法:

struct Fib
{
int x1;
int x2;
};

Fib fib(int x)
{
Fib ans;
if(x == 2)
{
ans.x1 = 0;
ans.x2 = 1%MOD;
return ans;
}
Fib temp;
int x1 = x/2, x2 = x1 - 1;
if(x1%2)
{
temp = fib(x2);
ans.x1 = (2*temp.x1 + temp.x2)*temp.x2%MOD;
ans.x2 = ((temp.x1 + temp.x2)*(temp.x1 + temp.x2) + temp.x2*temp.x2)%MOD;
}
else
{
temp = fib(x1);
ans.x1 = (temp.x1*temp.x1 + temp.x2*temp.x2)%MOD;
ans.x2 = (2*temp.x1 + temp.x2)*temp.x2%MOD;
}
return ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: