Другие языки программирования и технологии
Что такое факториал? Помогите пожалуйсто с синтаксисом С++.
Вот функция вычисления факториала, мне здесь непонятны некоторые строчкиint fact(int n){ int k; if (n == 1) { k = 1; } else { k = n * fact(n – 1); } return k;} объясните пожалуйсто следующие строчкиint fact(int n) k = n * fact(n – 1); return k;заранее благодарю.
Факториал числа n - это произведение всех целых чисел подряд от 1 до числа n включительно.
факториал n! есть произведение всех чисел от 1 до n включительно.
есть дубовый подход к вычислению факториала N!
это когда делают цикл до N и перемножают все числа от 1 до N.
в данном же коде используется рекурсия
т. е. функия fact будет вызывать сама себя с уменьшенным значением аргумента.. .
сами подумайте
n! = n * (n-1)! = n * (n-1) * (n-2)! = ...и так далее покуда значение в скобках не достигнет значения равного единице.
а вот часть
if (n == 1) {
k = 1;
}
является условием остановки, а то ведь рекурсия будет бежать до упора, который не установлен)) )
кстати, данный метод завалится при попытке вычислить факториал нуля, который по определению равен единице.
т. е. эту часть
if (n == 1) {
надо заменить на что-нить типа
if (n == 1 | n == 0 ) {...
да и обработку прочих (отрицательных значений) надо делать.. .
чтобы до ума доводить.. .
есть дубовый подход к вычислению факториала N!
это когда делают цикл до N и перемножают все числа от 1 до N.
в данном же коде используется рекурсия
т. е. функия fact будет вызывать сама себя с уменьшенным значением аргумента.. .
сами подумайте
n! = n * (n-1)! = n * (n-1) * (n-2)! = ...и так далее покуда значение в скобках не достигнет значения равного единице.
а вот часть
if (n == 1) {
k = 1;
}
является условием остановки, а то ведь рекурсия будет бежать до упора, который не установлен)) )
кстати, данный метод завалится при попытке вычислить факториал нуля, который по определению равен единице.
т. е. эту часть
if (n == 1) {
надо заменить на что-нить типа
if (n == 1 | n == 0 ) {...
да и обработку прочих (отрицательных значений) надо делать.. .
чтобы до ума доводить.. .
объявляем функцию fact(), принимающую 1 целочисленный параметр, возвращающую так же целое число. в теле этой функции производится вычисление произведения переданного ей параметра на результат работы этой же функции, но с параметром, уменьшенным на единицу (т. н. рекурсия) , результат вычисления возвращается
Мда.. .
майкрософтизация нашей стране.. не грозит :(((
Ну может это и к лучшему..: (
майкрософтизация нашей стране.. не грозит :(((
Ну может это и к лучшему..: (
1. int fact(int n) объявляет начала функции, в частности которая вычисляет факториал. int : тип возвращаемого значения функции целое число со знаком + или -. int n: означает что входным параметром служит символ n ипа int (см выше)
2. Это рекурсия. Означает, что функция вызывает сама себя. k = n * fact(n – 1); К = результат вызова. n - входной параметр.
3. return k; опертор return завершает выполнение подпрограммы и возвращает результат k.
Вроде все.
2. Это рекурсия. Означает, что функция вызывает сама себя. k = n * fact(n – 1); К = результат вызова. n - входной параметр.
3. return k; опертор return завершает выполнение подпрограммы и возвращает результат k.
Вроде все.
В програмирование не силен, но факториал (!) т. е. 5!=1*2*3*4*5
Это рекурсивная функция которая вызывает сама себя ...
int fact(int n) // определение функции
k = n * fact(n – 1);// в принцеппе сама рекурсия)))))) )
return k; // завершение функции (возврат в точку вызова)))))
int fact(int n) // определение функции
k = n * fact(n – 1);// в принцеппе сама рекурсия)))))) )
return k; // завершение функции (возврат в точку вызова)))))
int fact(int n) - функция, которая возвращает вычисленное значение k, n - "входящая" переменная
k = n * fact(n – 1); - k умножить на результат выполнения функции fact при n=n-1
return k; - функция возвращает значение k
факториал n: n! = 1*...*(n-1)*n
k = n * fact(n – 1); - k умножить на результат выполнения функции fact при n=n-1
return k; - функция возвращает значение k
факториал n: n! = 1*...*(n-1)*n
Похожие вопросы
- как пишется эта программа? помогите пожалуйсто..
- Факториал парных чисел в С++ (VS 2010)
- Помогите, пожалуйста, с нахождением факториала. Язык Си.
- Про синтаксис ассемблера.
- Задание функции факториала в С++
- Факториал tasm. Нужно вычислить факториал (не меньше 300!) и вывести результат на дисплей. Заранее спасибо.
- Факториалы в паскале???
- нужно написать программку на ассемблере, к-рая считает факториал числа n
- Вычисление суммы с факториалом в С++?
- На сколько нулей оканчивается факториал заданного числа