簡體   English   中英

找到你想的數字的程序不能正常工作,有什么問題?

[英]Program that finds the number you are thinking doesn't work properly, what is wrong?

我在處理這個遞歸代碼時遇到了問題。 基本上,我希望計算機以盡可能少的步驟“猜測”我正在考慮的數字。 但是,除了最終輸出之外,一切正常。 界限很好,它縮小了猜測范圍,直到它問我我想到的數字是否是 16,如果我輸入“=”,它應該輸出 16 而它總是輸出 50。有人能幫我找到錯誤嗎?

#include <iostream>
#include <cmath>
#include <string>

using namespace std;

unsigned int search (unsigned int boundInf, unsigned int boundSup);

int main ()
{
    int b;
    b = search (1, 100);

    cout << "Your number must be : " << b << endl;
}

unsigned int search (unsigned int boundInf, unsigned int boundSup)
{
    string magnitude;
    int b;
    b = (boundSup + boundInf) / 2;
    
    cout << "Is your number <, > or = to " << b << "? ";
    cin >> magnitude;

    if (magnitude == "<") {
        cout << "Between " << boundInf << " and " << b << endl;
        search (boundInf, b);
    }
    else if (magnitude == ">") {
        cout << "Between " << b << " and " << boundSup << endl;
        search (b, boundSup);
    }
    
    return b;
}

您在深入研究遞歸函數時忘記更改b的值,這可以通過更改search函數輕松解決,如下所示:

unsigned int search(unsigned int boundInf, unsigned int boundSup)
{
    string magnitude;
    int b;
    b = (boundSup + boundInf) / 2;
    cout << "Is your number <, > or = to " << b << "? ";
    cin >> magnitude;

    if (magnitude == "<")
    {
        cout << "Between " << boundInf << " and " << b << endl;
        b = search(boundInf, b);
    }
    else if (magnitude == ">")
    {
        cout << "Between " << b << " and " << boundSup << endl;
        b = search(b, boundSup);
    }

    return b;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM