标题:C++primer课后题3.24
只看楼主
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
 问题点数:0 回复次数:2 
C++primer课后题3.24
考虑这样的序列1,2,3,5,8,13,21,并初始化一个将该序列数字所对应的位置设置为1的bitset<32>对象。
然后换个方法,给定一个空的bitset对象,编写一小段程序把相应的数位设置为1.
答案是这样的,可小弟觉得不对啊,请懂的高手指教一下
bitset<32> bv(0x20212e)

bitset<32>bv;
    int x = 0, y = 1, z;
    z = x + y;
    while(z <= 21)
    {
        bv.set(z);
        x = y;
        y = z;
        z = x + y;
    }
    cout<<bv<<endl;
搜索更多相关主题的帖子: primer 
2008-10-13 11:30
xmnathan
Rank: 2
等 级:论坛游民
威 望:1
帖 子:73
专家分:10
注 册:2008-8-30
得分:0 
递归函数求菲波拉契数列么? 1 1 2 3 5 8 13 21 34 。。。前两项之和等于第三项


#include <iostream>
using namespace std;
int ff(int n)
{
    int f;
    if((n==1)|(n==2)) f=1;
    else f=ff(n-1)+ff(n-2);
    return f;
}
void main()
{
    int n;
    cout<<"输入数列输出个数"<<endl;
    cin>>n;
    if(n<1)
    {
        system("cls");
        cout<<"输入错误请重新输入"<<endl;
        main();
    }
    for(int i=1;i<=n;i++)
        cout<<ff(i)<<"  ";
}
2008-10-13 14:09
isbasic
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-1-17
得分:0 
楼上写法好牛叉,可惜没学到那块,看不懂重构。

根据楼主的代码,做了点改动,还是实现了。
程序代码:
#include "stdafx.h"
#include <bitset>
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int a(0),b(1),x(0);

    bitset<8> r(0);

    while ( x < 21 )
    {
        x = a + b;
        a = b;
        b = x;
        r = x;
        cout << r << "\t"  << x << endl;
    }

    //cout << endl;
   

    system("PAUSE");
    return 0;
}

2014-01-17 03:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-237934-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.453208 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved