Помогите найти ошибку в программе расчета факториала - C (СИ)
Формулировка задачи:
Начал Си учить в студии13 печатаю по статье и решил факториал писать, ну где 1*2*3*4 и дальше числа. Ясно чё фигня, но и тут запара.
Ввожу "-1" и оно вроде пишет чтоб ввод повторил, пишу 5 и пишет 120, но потом жму энтер, а оно мне -1. Какого?
Спасибо, ребятки за возможные ответы. Помогите жизу разрулить.
#include <stdio.h> #include <windows.h> #include <locale.h> int factorial(short n); int main() { setlocale(LC_ALL, "Rus"); printf("Введите число для вычисления его факториала\nn = "); int n; scanf_s("%d",&n); printf("%d",factoial(n)); getch(); return 0; } int factoial(short n) { if ((n < 0) || (n > 10)) { printf("Повторите ввод!"); main(); } if (n == 0) return 1; if (n <= 2) return n; return(n * factoial(n - 1)); }
А, в программе наверно надо после 23-ей строки, после main(); добавить exit(0);???
Вроде чёта чухается и не грузит по кругу циклы и лишнего нету. Ну так наверное неправильно.
Решение задачи: «Помогите найти ошибку в программе расчета факториала»
textual
Листинг программы
#include <stdio.h> int main(int argc, char ** argv) { if ( argc > 1 ) { printf("%s ", argv[argc-1]); main(argc - 1, argv); } else printf("\n"); return 0; }
Объяснение кода листинга программы
В данном коде реализована рекурсивная функция для вычисления факториала числа.
- Включаем заголовочный файл stdio.h, который содержит функции ввода-вывода.
- В функции main() проверяем, больше ли количество аргументов, переданных в программу, единицы. Если это так, то выводим последний аргумент, представленный в виде строки, и вызываем рекурсивно функцию main() с уменьшенным на единицу количеством аргументов.
- Если количество аргументов, переданных в программу, равно единице, то выводим символ новой строки.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д