递归函数的输出结果是错误的,我在代码中找不到任何错误
The output of the recursive function is coming out to be wrong , i cant find any mistake in the code
该函数的目的是找出给定数组中的数字是否可以形成给定的总和。它可以根据需要多次使用数组中的数字来获得总和。任何人都可以找到逻辑中的缺陷。我正在使用递归来解决问题
#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 语句后有一个分号。这表示 if 语句结束。
if (findsum(rem,arr) == true);
{
return true;
}
上面的代码 returns 无论条件值如何都为真。
这个错误很常见,如果你打开警告,现代编译器会警告你,你应该这样做。
该函数的目的是找出给定数组中的数字是否可以形成给定的总和。它可以根据需要多次使用数组中的数字来获得总和。任何人都可以找到逻辑中的缺陷。我正在使用递归来解决问题
#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 语句后有一个分号。这表示 if 语句结束。
if (findsum(rem,arr) == true);
{
return true;
}
上面的代码 returns 无论条件值如何都为真。 这个错误很常见,如果你打开警告,现代编译器会警告你,你应该这样做。