can anyone explain me how this piece of code works?
issub(int p[],int n,int sum){
if(sum==0) return true;
else if(n==0 && sum!=0) return false;
if(p[n-1]>sum)
return issub(p,n-1,sum);
else
return issub(p,n-1,sum) || issub(p,n-1,sum-p[n-1]);
}
can anyone explain me how this piece of code works?
issub(int p[],int n,int sum){
if(sum==0) return true;
else if(n==0 && sum!=0) return false;
if(p[n-1]>sum)
return issub(p,n-1,sum);
else
return issub(p,n-1,sum) || issub(p,n-1,sum-p[n-1]);
}
A = {1,2,3}
B = {2,3,4,D}
D ={2,5,6}
E = {A, B, D}
This is a recursion code and using the sets above as examples in reference to your code. The first method arguments accepts a set in form of an array. issub(int p[],int n,int sum)
Elements of array P can be the values of the set A
n is the number of the elements within the set A
sum is the sum of the elements within set A, in this case 6
So if(sum==0) return true; - This first if statement checks if the set contains any other subsets within it like A B C, If it doesnt then its definately a subset and will return true.
else if(n==0 && sum!=0) return false;- This checks if set contains any elements like 1,2,3 And if the sum of elements it holds is not zero( not empty) thus returning false- not a subset. (The main set could still have elements like (1,2,3) thus having a certain sum.
The last two lines check if the set is a subset of a subset like example B = {2,3,4,D}