Howdy!
Matija Grabnar wrote:
On Sat, Mar 04, 2006 at 12:19:44AM +0100, Toma? Toplak wrote:
Za faks re??ujem enostavne naloge, ki jih je potrebno re??iti z bash
skripto. Zanima me, ce obstaja resitev racunanja fakultete, kjer
upoorabimo rekurzivni program, toraj da skripta kli??e sama sebe?
??e lahko podam dva argumenta ./fakulteta.sh 5 1, potem je re??itev
enostavna, ne vem pa, kako bi to naredil samo z enim argumentom
./fakulteta.sh 5.
[snip]
Ne mislis dovolj rekurzivno. V resnici stevca sploh ne potrebujes:
#!/bin/bash
if [ $1 -eq 0 ]
then
echo 1
exit 0
fi
less=`expr $1 - 1`
sub=`./fak.sh $less`
facul=`expr $1 \* $sub`
echo $facul
Zgornji primer ni bashevski, deluje v vseh Bourne shellih, verjetno pa
tudi v K shellih.
Lahko pa vse skupaj prepišemo v čisti bashizem - uporabimo notranjo
bashovo aritmetiko, ki poleg vsega pospeši delovanje ker ni potrebno
zaganjanje zunanjega programa (expr):
Torej takole:
#!/bin/bash
if [ $1 -eq 0 ]; then
echo 1
exit 0
fi
less=$(( $1 - 1 ))
sub=$( $0 $less )
facul=$(( $1 * $sub ))
echo $facul
exit 0
--
Peace!
Mkx
---- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
---- echo 16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlb xq | dc
_______________________________________________
lugos-list mailing list
[email protected]
http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list