Ivan Shmakov
unread,Mar 26, 2012, 1:26:54 AM3/26/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Возвращаясь к вопросу о <<Hello, world!>> в C. В качестве
<<начальной>> программы может выступать и нечто более
<<вычислительное.>> Тот же (ставший классическим для ФП)
факториал. E. g.:
#include <stdio.h> /* for printf () */
static int
xfactorial (int a, int n)
{
/* . */
return (n > 1
? xfactorial (a * n, n - 1)
: a);
}
int
main ()
{
int n
= 5;
int f
= xfactorial (1, n);
printf ("%d! = %d\n",
n, f);
/* . */
return 0;
}
Причем, я предпочел начать с <<преобразования>> рекурсивного
определения факториала в <<математической>> записи в C-код,
после чего -- объяснить смысл функции main (), static-функций,
printf () для преобразования <<машинной>> формы числа в
<<символьную>> с выводом результата, и #include <stdio.h> как
способа подключения стандартных /объявлений/.
Да, я предпочел воспользоваться таким расширением (AIUI,
нестандартным) языка C как оптимизация <<хвостовой рекурсии>>,
реализуемым, в частности, GCC. Главным образом, ради большего
соответствия получаемого кода и исходной математической записи.
PS. BTW, возможно, под влиянием английского языка, я вполне понимаю
русское <<мир>> в т. ч. и как <<общество>>, <<народ>>, etc.
--
FSF associate member #7257