To (explizit) Looping zu vermeiden, hier ist eine Lösung, die Rekursion "statt" verwendet:
#!/usr/bin/perl
use v5.20;
my @arr1 = (1, 0, 0, 0, 1);
my @arr2 = (1, 1, 0, 1, 1);
my @result=non_looping_pairwise_sum([ @arr1 ], [ @arr2 ]); # pass in copies, so the originals are not modified
say "@result";
sub non_looping_pairwise_sum { # only handles lists that have the same length
my ($a1, $a2)[email protected]_;
return() if (scalar(@$a1)==0 and scalar(@$a2)==0);
my $e1=shift @$a1;
my $e2=shift @$a2;
return ($e1+$e2, non_looping_pairwise_sum($a1, $a2));
}
Ausgang:
2 1 0 1 2
Beachten Sie, dass use v5.20
bedeutet, dass Sie nicht use strict; use warnings
zu schreiben, ich denken.
Entschuldigung/Kudos zu @parm für die Idee.
Sind die Zahlen immer 0 und 1? Wenn ja, könnten Sie das als Integer behandeln und einfach zwei ganze Zahlen addieren, um eine dritte ganze Zahl mit denselben Ziffern wie dieses Array zu erhalten. – Benj
Offensichtlich geht das auch davon aus, dass die Anzahl der Ziffern gering ist. – Benj
Es ist OK. Ich habe nur 0 und 1. –