[OpenBIOS] Kickstarting a revolution ...
Stefan Reinauer
stepan at suse.de
Wed Dec 19 13:46:46 CET 2001
* Mads Martin Jørgensen <mmj at suse.de> [011219 12:50]:
> * Stefan Reinauer <stepan at openbios.net> [Dec 19. 2001 01:56]:
> > --
> > Ok : FC RECURSE DUP 1 > IF DUP 1 - FC * ELSE DROP 1 ENDIF ; 42 FC .
>
> :-) Maybe our project founder would elaborate on that one? Not all of us
> speak Forth that good (yet :)
:-) Actually it should have been a little forth word definition that
calculates faculty of the given number recursively. But there were 2 mistakes
in it.
The correct version would be:
Ok : fc recursive dup 1 > if dup 1 - fc * then ; 42 fc .
(with Ok being the Open Firmware prompt)
The program can be written in a more readable way:
: FC RECURSIVE ( n -- n! | 1 ) \ This is the word definition including
\ the stack diagram.
DUP 1 > \ safe n and compare it to 1
IF \ if (n>1)
DUP 1 - FC * \ fc(n) = fc(n-1) * n
ELSE
DROP 1 \ If n=1 or below (n! not defined for n<1)
\ bail out of recursion.
THEN
;
"42 fc ." then pushes 42 to the stack, calculates faculty and prints it.
Best regards,
Stefan Reinauer
--
Ok : fc recursive dup 1 > if dup 1 - fc * then ; 42 fc .
-
To unsubscribe: send mail to majordomo at freiburg.linux.de
with 'unsubscribe openbios' in the body of the message
http://www.freiburg.linux.de/OpenBIOS/ - free your system..
More information about the openbios
mailing list