Аварийное завершение программы - C (СИ) (151537)
Формулировка задачи:
Доброго времени суток. Составил программу для вычисления факториала, используя рекурсию, но почему-то после ввода числа следует аварийное завершение. Где у меня ошибка?
#include <stdio.h>
int fact(int n) {
int f;
if (n=1) return 1;
else if (n!=0) {
f=fact(n-1)*n;
return f;
}
}
int main(void)
{
int n;
printf("Enter factorial\n");
scanf("%d", n);
printf("The result is %d \n", fact(n));
return 0;
}Решение задачи: «Аварийное завершение программы»
textual
Листинг программы
case 0:
* * * {
* * * * *return 0;
Объяснение кода листинга программы
- В данном коде используется оператор
return, который предназначен для возврата значения из функции. Значениеreturn 0означает успешный возврат и завершение работы функции без ошибок. - Код обернут в фигурные скобки
{...}, которые обозначают блок кода. - Внутри блока кода находится оператор
return 0;, который является единственным оператором в данном блоке кода. - Так как оператор
returnвозвращает значение и завершает выполнение функции, то в данном случае значение0будет возвращено и функция завершит свою работу. - Данная ситуация соответствует аварийному завершению программы, так как в данном блоке кода нет других действий, которые могут быть выполнены при возникновении ошибки.
- Таким образом, при выполнении данного кода, функция завершится с возвратом значения
0, что может указывать на успешное аварийное завершение программы.