Hi Rick (and Simon)! If I change the final (and only) call to `last`, and make it a call to `exit` instead, the `Nil` disappears. Helpful?
Best Regards, Bill. On Thu, Jun 16, 2022 at 11:07 AM Simon Proctor <simon.proc...@gmail.com> wrote: > > 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.