LINUX.ORG.RU

История изменений

Исправление wota, (текущая версия) :

ЗЫЖ и сравни сложность кода...

(defun factorial (x)
  (defun iter (y c x)
	(if (> c x)
	  y
	  (iter (* y c) (+ c 1) x)))
  (iter 1 1 x))
factorial (x) {
    int iter(y, c) {
        return c > x ? y : iter(y * c, c + 1);
    }
    return iter(1, 1);
}

да - на С (хоть и чуть нестандартном - под gcc с nested functions) попроще будет

Исходная версия wota, :

ЗЫЖ и сравни сложность кода...

(defun factorial (x)
  (defun iter (y c x)
	(if (> c x)
	  y
	  (iter (* y c) (+ c 1) x)))
  (iter 1 1 x))
factorial (x) {
    int iter(y, c) {
        return c > x ? y : iter(y * c, c + 1);
    }
    return iter(1, 1);
}

да - на С (хоть и чуть нестандатном - под gcc) попроще будет