Here is the code: ... } else { return factors($q, @f); } ...
Return the values during recursive calls too. Output: [2 2 5] 2 2 5 Simon Proctor @ 2022-06-16 19:07 +01: > I think, and I don't have my computer to hand to double check but I > think you want a return before your recursive.call to factors passing > in @f. > > When dealing with recursive functions you need to make sure what > you're returning back up the stack. > > On Thu, 16 Jun 2022, 18:10 Rick Bychowski, <r...@hiranyaloka.com> > wrote: > > Hi Everyone, > > I've been lurking quite a while, this will be my first post to > perl6 > users. I've written a lot of short scripts in perl5 for system > admin > type stuff at home and work. Lately I'm playing with Raku, which > is a > lot of fun. Error reporting is excellent, as is the online > documentation. > > To the point. I recently started the perl weekly challenge. Lots > of > math/primes stuff. I wrote an algorithm to list all the prime > factors of > an integer, using a recursive subroutine. I'm able to print the > result > from the subroutine, but it always returns Nil. What am I missing? > > #!/usr/bin/env raku > > sub MAIN($n = 20) { > .say for factors($n); # Nil > } > > sub factors($n, @factors?) { > my @f = @factors.elems ?? @factors !! (); > my $q; > for 2 ..^ $n -> $i { > if $n %% $i { > $q = Int($n / $i); > @f.push($i); > if $q.is-prime { > @f.push($q); > say @f; # [2 2 5] > return @f; > } else { > factors($q, @f); > } > last; > } > } > } > > Returns > [2 2 5] > Nil > > -- > Rick Bychowski > > The information in this email is confidential and may be legally > privileged. It is intended solely for the addressee(s). Access to > this > e-mail by anyone else is unauthorized.
signature.asc
Description: PGP signature