Silnia - bash

0

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.

1

http://mydebian.blogdns.org/?p=133 - przestudiuj te przykłady ;)

0

Dziękuje, szukalem i nie moglem niczego znaleźć. Nie pomyslalem, zeby szukac po angielsku ^^

Pozdrawiam.

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