Perl recursion causing "use of uninitialized value" error -


i new perl, , can't seem find answers anywhere. narrowed down problem recursive function. if comment out, works fine without errors. have:

use strict; use warnings;   sub generatepermutations{     my($n, $nmax, $i, $arrlength, @arr) = @_;      if($n == 0){     foreach($i..$arrlength-1){         $arr[$i] = 0;         ++$i;     }      @qarr = ();     $rval = 1;      for(my $p = 0; $p < @arr; $p++){          $rval *= fac($arr[$p]);          for(my $q = 0; $q < $arrlength; $q++){          $qcount = 0;          for(my $j = 0; $j < $arrlength; $j++){               if($arr[$j] eq $q){             ++$qcount;             }           }         $qarr[$i] = $qcount;         }     }     $qval = 1;     for(my $qnum = 0; $qnum < @qarr; $qnum++){         $qval *= fac($qarr[$qnum]);     }     $maxdistval = 0;     $maxdistval = (1/($arrlength**$arrlength))*(fac($arrlength)/$rval)*(fac($arrlength)/$qval);      if($maxdistval > $distribution){         $distribution = $maxdistval;     }     #prints out distributions permutations (comment out previous if-statement)     print "dist: " . $distribution . "<br /><br />";     #return 1;     }     $resultcnt = 0;     for(my $cnt = minval($nmax, $n); $cnt > 0; $cnt--){     $arr[$i] = $cnt;     ++$resultcnt;      generatepermutations(int($n-$cnt), $cnt, $i+1, $arrlength, @arr);     }      #return $resultcnt;     return $distribution;  } 

what missing?

if had guess problem: $qarr[$i] = $qcount;

because you're writing 1 element in @qarr repeatedly, , later on reading elements 0 through $#qarr.

did mean $qarr[$p] = $qcount;? or $qarr[$q] = $qcount;?


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -