我是c ++的新手。我想找到一笔钱' k'在一组数字中。我正在使用递归来查找是否''可以使用任何nos。在数组中。我写了以下代码。
#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;
}
但是上面的代码给了我真实的而不是假的。问题是什么。提前谢谢。
答案 0 :(得分:1)
在return
isSum
&&
中,您希望使用逻辑和运算符||
,而不是逻辑或运算符return
。对于单个元素,您还需要{{1}}。