【问题标题】:How to assign return value of a function into a variable in c++?如何将函数的返回值分配给c ++中的变量?
【发布时间】:2021-03-04 11:57:30
【问题描述】:

我想将函数的返回值赋值给 C++ 中的变量,但程序退出,没有任何输出。

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

program output screenshot

完整代码---

#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;
}   

【问题讨论】:

  • 您在运行该程序时预期会发生什么?
  • 程序里有没有放输出语句?
  • 请编辑此内容以包含一个最小的可重现示例。如果我们不知道您是如何写的 binarySearcharrnumsearchNumber,您希望人们如何提供帮助?
  • 将返回值赋给变量不会输出该值。你可能想做#import &lt;iostream&gt;之类的事情,然后在你包含的那一行之后,做std::cout &lt;&lt; numberPosition &lt;&lt; "\n";
  • 好吧对不起...我包括完整的代码

标签: c++ variables return


【解决方案1】:

我在你的程序截图中看到的返回码是 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; 
} 

【讨论】:

    【解决方案2】:

    这里此代码有效。取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;
    }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多