簡體   English   中英

c++ - 如何將函數的返回值分配給變量?

[英]How to assign return value of a function into a variable in c++?

我想將函數的返回值分配給 C++ 中的變量,但程序退出時沒有任何輸出。

int numberPosition = binarySearch(arr, num, searchNumber);

程序輸出截圖

完整代碼---

#include <iostream>
using namespace std;


int binarySearch(int arr[], int num, int searchNumber){
    int start=0, end=num;

    while(start<=end){
        int mid = (start+end) / 2;
        if(arr[mid] == searchNumber){
            return mid;
        }else if(arr[mid] <= searchNumber){
            start = mid+1;
        }else{
            end = mid-1;
        }
    }
    
    return -1;
}

int main(){
    
    int num, arr[num], searchNumber;
    cout<<"How many Elements u want to insert? \n";
    
    cin>>num;
    
    cout<<"\n Enter ut Numbers:- \n";
    for(int i=0; i<num; i++){
        cin>>arr[i];
    }
    
    cout<<"\n Enter the Number u want to search:- ";
    cin>>searchNumber;
    
    int numberPosition = binarySearch(arr, num, searchNumber);
    
    if(numberPosition){
        cout<<searchNumber<<" is founded at position: "<<numberPosition;
    }else{
        cout<<searchNumber<<" is Not Founded";
    }
    
    return 0;
}   

我能夠在您的程序屏幕截圖中看到的返回代碼是3221225725 此返回碼意味着your computer ran out of stack memory before the recursion limit was reached. .

因此,您的代碼中的某處仍然存在無限遞歸。

所以我認為在你的函數binarySearch(arr,num,searchNumber) ,你在某處遞歸調用你的函數。 由於您沒有發布函數的代碼,因此我無法幫助您解決犯錯的地方。

因此,請確保您的實現是正確的。 二分查找c++函數的正確實現是

int binarySearch(int arr[], int l, int r, int x) 
{ 
    if (r >= l) { 
        int mid = l + (r - l) / 2; 

        if (arr[mid] == x) 
            return mid; 

        if (arr[mid] > x) 
            return binarySearch(arr, l, mid - 1, x); 

        return binarySearch(arr, mid + 1, r, x); 
    } 

    return -1; 
} 

這里代碼有效。 取num的輸入值后,需要用變量num聲明數組的長度。

#include <iostream>
using namespace std;


int binarySearch(int arr[], int num, int searchNumber){
int start=0, end=num;

while(start<=end){
    int mid = (start+end) / 2;
    if(arr[mid] == searchNumber){
        return mid;
    }else if(arr[mid] <= searchNumber){
        start = mid+1;
    }else{
        end = mid-1;
    }
}

return -1;
}

int main(){

int num, searchNumber;
cout<<"How many Elements u want to insert? \n";

cin>>num;
int arr[num];
cout<<"\n Enter ut Numbers:- \n";
for(int i=0; i<num; i++){
    cin>>arr[i];
}

cout<<"\n Enter the Number u want to search:- ";
cin>>searchNumber;

int numberPosition = binarySearch(arr, num, searchNumber);

if(numberPosition!=-1){
    cout<<searchNumber<<" is founded at position: "<<numberPosition;
}else{
    cout<<searchNumber<<" is Not Founded";
}

return 0;
}  

暫無
暫無

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

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