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.

Reply via email to