Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
帮助UNNOBY我的C++作业_C++ - Fatal编程技术网

帮助UNNOBY我的C++作业

帮助UNNOBY我的C++作业,c++,C++,特别是,twoify函数似乎是noobis。这是一种鞅赌注模式,基本上每次输掉的赌注都是之前赌注的两倍,直到赢。不清楚为什么twoify是一种递归方法。也许这是在类中用来介绍或说明递归的,但显然这可以用num乘以2^的函数来代替。这可以用C语言的求幂数学运算符来表示,或者,如其他响应中所示,通过左移位操作来表示,移位的位数与指数乘以参数的位数相同,这里不清楚为什么twoify是一种递归方法。也许这是在类中用来介绍或说明递归的,但显然这可以用num乘以2^的函数来代替。这可以用C语言的求幂数学运算

特别是,twoify函数似乎是noobis。这是一种鞅赌注模式,基本上每次输掉的赌注都是之前赌注的两倍,直到赢。

不清楚为什么twoify是一种递归方法。也许这是在类中用来介绍或说明递归的,但显然这可以用num乘以2^的函数来代替。这可以用C语言的求幂数学运算符来表示,或者,如其他响应中所示,通过左移位操作来表示,移位的位数与指数乘以参数的位数相同,这里不清楚为什么twoify是一种递归方法。也许这是在类中用来介绍或说明递归的,但显然这可以用num乘以2^的函数来代替。这可以用C语言的求幂数学运算符表示,或者,如其他响应中所示,通过执行左移位操作,移位的位数与指数乘以参数的位数相同,这里

首先,避免无用的递归,将其转化为迭代:

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int twoify(int num, int times)
{
    num *= 2;
    if (times > 0)
    {
        times--;
        return twoify(num, times);
    }
    return num;
}

int main()
{
    srand(time(NULL));
    const int BET = 1;
    const int TIMES = 100000;
    const int CHANCE = 50;

    int wins = 0;
    int losses = 0;
    int wstreak = 0;
    int lstreak = 0;
    int cwstreak = 0;
    int clstreak = 0;

    for (int i = 0; i < TIMES; i++)
    {
        int num = rand() % 100 + 1;
        if (num <= CHANCE) // win?
        {
            wins++;
            cwstreak++;
            clstreak = 0;
            if (cwstreak > wstreak)
                wstreak = cwstreak;
        }
        else
        {
            losses++;
            clstreak++;
            cwstreak = 0;
            if (clstreak > lstreak)
                lstreak = clstreak;
        }

    }

    cout << "Wins: " << wins << "\tLosses: " << losses << endl;
    cout << "Win Streak: " << wstreak << "\tLoss Streak: " << lstreak << endl;
    cout << "Worst lose bet: " << twoify(BET, lstreak) << endl;

    system("PAUSE");
    cout << endl << endl;
    return main();
}
int twoify(int num, int times) {
    return num << (times + 1);  // num * 2**(times+1)
}
但是,如果保证时间>0,您可以做得更好,这也会简化上述版本,允许您使用a while而不是do/while,但无论如何…:

int twoify(int num, int times)
{
    do {
      num *= 2;
      --times;
    } while (times >= 0);
    return num;
}

这种方法之所以有效,是因为它相当于将num乘以2,并提升到+1次方,这是递归和迭代版本都要做的。

首先,避免无用的递归,将其转化为迭代:

int twoify(int num, int times) {
    return num << (times + 1);  // num * 2**(times+1)
}
但是,如果保证时间>0,您可以做得更好,这也会简化上述版本,允许您使用a while而不是do/while,但无论如何…:

int twoify(int num, int times)
{
    do {
      num *= 2;
      --times;
    } while (times >= 0);
    return num;
}


这样做的原因是,它相当于将num乘以2,并提升到倍+1次方,这是递归和迭代版本都要做的。

OP想取消noobify。对我来说,这意味着,除其他外,消除多余的递归。不过,OP想取消noobify。对我来说,这包括消除多余的递归。数学!爷爷,你的Twoiff5,0=10。应该是乘以而不是乘以+1。@codebliss:你错了,如果你想让函数输出与OP的函数相同的值,那就是乘以+1。OP的twoif5,0也是10.MATH!爷爷,你的Twoiff5,0=10。应该是times而不是times+1。@codebliss:你错了,如果你想让函数的输出与OP的函数相同,那么应该是times+1。OP的twoif5,0也是10。虽然我不同意在你的twoify实现中使用return语句,它的名称doubleN或类似的名称如何,但我很高兴你的间距是一致的且可读的。这一点很重要,要及早学习。不要带着这个算法去拉斯维加斯。通过工作赚钱更快,风险更小。是否移位:pI喜欢《联合国词典》,并期待着很快在词典中看到它。@wilhelmtell:同意。使用投注系统是我在这里看到的最愚蠢的事情。或许OP是想证明投注系统不起作用@帕维姆:我还以为是德·努比-虽然我不同意在twoify的实现中使用return语句,它的名称是doubleN或类似的,但我很高兴您的间距是一致的,可读性好。这一点很重要,要及早学习。不要带着这个算法去拉斯维加斯。通过工作赚钱更快,风险更小。是否移位:pI喜欢《联合国词典》,并期待着很快在词典中看到它。@wilhelmtell:同意。使用投注系统是我在这里看到的最愚蠢的事情。或许OP是想证明投注系统不起作用@帕维姆:我还以为是德·努比-