Witajcie.
Proszę o pomoc.
Napisałem program w C na obliczanie silni rekurencyjnie:
#include <stdio.h>
int silnia (int wartosc) {
if (wartosc == 0) return 1;
else return wartosc*silnia(wartosc-1);
}
main () {
printf("%d",silnia(5));
while(1);
}
Chciałbym go teraz przerobic na skrypt w bashu.
Zrobilem to po swojemu, ale coś nie dziala. Proszę o poprawienie.
#!/bin/bash
function silnia
{
local -i liczba
if [ "$#" -eq 1 ]
then
if [ $1 -le 0 ]
then
return 1;
else
liczba=$[$1*($1-1)]
return $[silnia $liczba]
fi
else
echo "Funkcja powinna przyjmowac 1 argument"
return 1
fi
return 0
}
echo $silnia $@
Proszę nie pisac skryptu na liczenie silni przy pomocy pętli - potrafię to zrobic.
PS. Skrypt zwraca nie to co powinien, prawdopodobnie błąd w lini: "liczba=$[$1*($1-1)]"
Z góry dziękuje.