Schrift
[thread]2931[/thread]

schleifen rekursiv programmieren

Leser: 2


<< >> 3 Einträge, 1 Seite
Gast Gast
 2005-03-02 16:56
#29452 #29452
Hi

Ich hab folgendes problem:
Code: (dl )
1
2
3
4
5
6
7
8
for ($i=1;$i<10;$i++) {
for ($ii=$i+1;$ii<10;$ii++) {
print $i."+".$ii."\n";
for ($iii=$ii+1;$iii<10;$iii++) {
print $i."+".$ii."+".$iii."\n";
}
}
}


Diesen code muss ich irgendwie rekursiv programmieren, da ich nicht weiss, wie oft diese hässliche Verschachtelung vorgenommen werden muss. Ich komme bloss nicht auf die Lösung wie ich das rekursiv programmieren könnte :(

Wäre froh, wenigstens einen Denkanstoss zu bekommen.
Dankeschön
jan
 2005-03-02 17:08
#29453 #29453
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
eine subroutine, die einen start, einen endparameter und einen wertearray übernimmt, von start bis ende durchzählt. für jeden wert ruft sie sich selbst mit start und endparameter und dem wertearray + aktueller wert der for-schleife auf. dann setzt du noch einen level-param ein, der ebenfalls weitergegeben wird, womit du die tiefe der rekursion bestimmen kannst.
Taulmarill
 2005-03-02 18:25
#29454 #29454
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
um rekursion zu verstehen muss man erst einmal rekursion verstehen :D

hier nen kleines beispielscript, welches dein problem lösen sollte. wenn du verständnissprobleme hast, einfach nachfragen. rekursion ist schwierig zu verstehen, wenn man damit noch nix gemacht hat:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;

my $iter = 3;

&foo( $iter );

sub foo {
my ( $iter, @val ) = @_;
return unless $iter;
$iter--;
for my $i ( 1 .. 10 ) {
print join("+", @val, $i), "\n" if scalar @_ > 1;
&foo( $iter, @val, $i );
}
}
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< >> 3 Einträge, 1 Seite



View all threads created 2005-03-02 16:56.