Cellar Door

16 ноября 2005

Scheme it!

guile>  (define (factorial num)
(let fact-aux ((k num) (result 1))
(cond ((< k 0) #f)
((< k 3) (* k result))
(else (fact-aux (- k 1) (* k result))))))

guile> (factorial 5)
120
guile> (factorial 20000)
1819206320230345134827641756866458766071609901478752648918062218634569461
0385575344538360958277587247391775023841899120416712453839265768657234754
6452493027570920462535787578952590049182341454271803607039252108504728338
3729296861580052404638841199526622379791066223341463393474395925629787482
1131634186476654555866604361840872239519462766155485616322089816515450918
7221843629440605187730639278335844593118641714839826008040014692810589564
3738692767105374763186090336511780868599512519843617384918221869858019078
1963391287596652958411577778134914894099392305781031059059887206914939526
[...following output not shown here...]