Silnia rekurencyjna #perl

0

Dzień Dobry. Mam problem z tablicą rekurencyjną.

Zadanie: Napisz tablicę rekurencyjną "Silnia", która po jednokrotnym zastosowaniu, tj. wywołaniu "&Silnia(6)", początkowo pustą tablicę "tb=();" przekształca w tablicę "@tb=(1, 2, 6, 24, 120, 720).

Oczywiście, jeśli chodzi o moją wersję programu liczącego silnię jest dobra, i mi kompiluje, ale mój wykładowca się z tym nie zgadza, a ja nie widzę błędu.
Mój program porównał do pascala, i ocenił ją jako złą. Oto część programu:

#!/usr/bin/perl

sub silniar 
{                       
  my($num) = @_;                      
  if($num == 1) 
  {                     
    @tbr[$num]=1;
    return @tbr[$num];                
  } else 
   {
    @tbr[$num]=$num * silniar($num - 1);  
    return @tbr[$num];
    }
}
0

Hahahahahah .
Dopowiem tylko, że powiedział mi jeszcze, że tablice w perlu definiuje się od zera, a nie od jedynki, tak jak w pascalu, więc musi być :
@tbr[$num-1]
Tylko jak to robię to za chwile wyskakują mi zera w tablicy .

0

Już znalazłam sposób. Mam nadzieję, że ten mi uzna:

@tb=();

sub Silnia 
{
 my($x) = @_;

if ($x == 1) 
  {
    $tb[0] = 1;
    return 1;
   }
else 
  {
    return $tb[$x-1] = $x * Silnia($x-1);
   }
}
&Silnia(6);

print "@tb";
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1