已知递推数列:a(1)=1, a(2i)=a(i),(i为正整数)a(2i+1) = a(i) + a(i+1)(i为正整数)试求该数列的第n项。(设n<30000)
答案:3 悬赏:60 手机版
解决时间 2021-06-02 13:47
- 提问者网友:遁入空寂
- 2021-06-02 00:57
用c++做,无奈啊 我不会
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-06-02 01:11
#include<iostream>
using namespace std;
int fun(int n) //函数体
{
while(n>0&&n<30000)
{
if(n==1)return 1;
if(n>1) //递归调用
{
int m=n%2;
if(m==0)
return fun(n/2);
if(m==1)
return fun(n/2)+fun(n/2+1);
}
}
}
int main() //用1~10测试函数,答案正确!
{
for(int i=1;i<10;i++)
cout<<fun(i)<<" ";
return 0;
}
全部回答
- 1楼网友:山有枢
- 2021-06-02 02:50
int GetIt(int now) { if(now==1) { return 1; } if(now % 2 == 0) { return GetIt(now/2); } else { now = (now-1) / 2; return GetIt(now) + GetIt(now+1); } }
int _tmain(int argc, _TCHAR* argv[]) { int n = 30000; int result = GetIt(n); printf("result:%d\n",result); return 1; }
- 2楼网友:妄饮晩冬酒
- 2021-06-02 01:33
斐波那契数列问题
int fib(int n)
{
if(n==1)
return 1;
else if(n==2)
return 1;
else
return(fib(n)+fib(n+1));
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯