12345678910111213141516171819202122232425262728293031 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Left_factorials#Sidef
- #
- func left_fact(n) {
- static cached = 0;
- static factorial = 1;
- static leftfact = 0;
- if (n < cached) {
- cached = 0;
- factorial = 1;
- leftfact = 0;
- }
- while (n > cached) {
- leftfact += factorial;
- factorial *= ++cached;
- }
- leftfact;
- }
- [range(0, 10), range(20, 50).by(10)].each { |r|
- r.each { |i|
- printf("!%d = %s\n", i, left_fact(i));
- }
- }
|