递归函数的输出结果是错误的,我在代码中找不到任何错误

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 无论条件值如何都为真。 这个错误很常见,如果你打开警告,现代编译器会警告你,你应该这样做。