[英]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.