2015-01-09 35 views
-3

我是C++的新手。我正在嘗試在數字數組中找到總和'k'。我使用遞歸來查找'k'是否可以使用任何nos。在數組中。我寫了下面的代碼。使用數組元素找到總和'k'

#include<iostream> 
using namespace std; 

bool isSum(int arr[],int low,int size, int k) 
{ 
    if(k == 0) 
     return true; 

    if(size == 0) 
     return false; 


    #using recursion , one recursion including the present no. in the array, another excluding the present no. 
    return (isSum(arr,low +1, size-1,k-arr[low]) || isSum(arr, low + 1, size -1 ,k)); 
} 

int main() 
{ 
    int arr[] = {261, 823, 126, 57, 826, 57, 47, 716, 146, 439, 15, 34, 238, 10, 690, 213, 292, 10, 16, 711};; 
    bool a = isSum(arr,0,20, 512); 
    if(a) 
     cout<<"true"<<endl; 
    else 
     cout<<"false"<<endl; 
    } 

但上面的代碼給了我真實的而不是false.what問題。提前致謝。

回答

1

在您的return對於isSum您想要使用邏輯運算符&&而不是邏輯運算符||。對於單個元素,您還需要return

+0

請你詳細說明一下,爲什麼我必須使用&&操作符。我認爲如果任何陳述是真實的,那麼這意味着我找到了這筆錢。我只想知道總和是否可能。 –

+0

我也不明白「單個元素的返回意味着什麼」。 –