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. >