In una discussione nella sezione relativa a linux mi è stata suggerita questa guida http://bash.cyberciti.biz/guide/Main_Page che mi sono pappato con piacere, ma proprio alla fine - sarà anche l'ora - non riesco a venirne fuori con questo esempo: http://bash.cyberciti.biz/guide/Recursive_function
Si parla appunto di funzioni ricorsive, e secondo il debug offerto, lo script si comporta in maniera comprensibile fino a quando il valore di i diventa due ed echo lo visualizza, però non capisco perché non finisca tutto qui. E invece f comincia ad essere moltiplicato per i valori precedentemente assunti da i... qualcuno saprebbe suggerirmi il perché?
Per comodità riporto anche lo script che in questo caso viene lanciato con ./nomescript.sh 5:
- Codice: Seleziona tutto
#!/bin/bash
# fact.sh - Shell script to to find factorial of given command line arg
factorial(){
local i=$1
local f
declare -i i
declare -i f
# factorial() is called until the value of $f is returned and is it is <= 2
# This is called the recursion
[ $i -le 2 ] && echo $i || { f=$(( i - 1)); f=$(factorial $f); f=$(( f * i )); echo $f; }
}
# display usage
[ $# -eq 0 ] && { echo "Usage: $0 number"; exit 1; }
# call factorial
factorial $1
Chiedo scusa se la domanda è stupida, ma sono sprovveduto in materia...
grazie a chi vorrà aiutarmi e ciao agli altri