【发布时间】:2022-01-25 09:54:02
【问题描述】:
该函数的目的是找出给定数组中的数字是否可以形成给定的和。它可以根据需要多次使用数组中的数字来获得总和。任何人都可以找到逻辑中的缺陷。我正在使用递归来解决问题
#include <bits/stdc++.h>
using namespace std;
bool findsum(int targetsum , vector<int> arr)
{
if(targetsum == 0)
{ return true;
}
if(targetsum < 0)
{ return false;
}
for(int i = 0 ; i < arr.size(); i++)
{
int rem = targetsum - arr[i];
if (findsum(rem,arr) == true);
{
return true;
}
}
return false;
}
int main()
{
int a = 4;
vector<int> array{5};
cout << findsum(a,array);
}
【问题讨论】:
-
这并没有解决问题,但
if (findsum(rem,arr) == true)应该写成if (findsum(rem,arr))。 -
哪一个都可以用吧?
-
它们的意思相同。就像
if (i == 0)和if ((i == 0) == true)的意思一样。
标签: c++ recursion dynamic-programming