Форум программистов, компьютерный форум CyberForum.ru

в чём я ошибся - C++

Восстановить пароль Регистрация
 
ник нэйм
3 / 3 / 1
Регистрация: 10.11.2013
Сообщений: 174
16.11.2013, 16:36     в чём я ошибся #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ConsoleApplication12.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
    int n,fact,result;
    printf("n=");
     scanf_s("%i",&n);
     if(n=1)
               result=1;
     else  {    
         result=n*fact(n-1);
     }
     printf("%i",result);
    _getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.11.2013, 16:39     в чём я ошибся #2
Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
http://www.cyberforum.ru/announcement.php?a=3

Не по теме:

Цитата Сообщение от ник нэйм Посмотреть сообщение
в чём я ошибся
не то занятие выбрал?

Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
16.11.2013, 16:40     в чём я ошибся #3
Факториалы что-ли? Тогда где ревлизация рекурсивной функции?
ник нэйм
3 / 3 / 1
Регистрация: 10.11.2013
Сообщений: 174
16.11.2013, 16:55  [ТС]     в чём я ошибся #4
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Факториалы что-ли? Тогда где ревлизация рекурсивной функции?


как её сделать?
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
16.11.2013, 18:17     в чём я ошибся #5
ник нэйм, написать
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
16.11.2013, 18:32     в чём я ошибся #6
Какой олень ввёл моду считать факториалы через рекурсию???
Для демонстрации отличий цикла от рекурсии ещё можно написать программку,
нафига это делать для практического подсчёта факториала, тем более человеку, не знающему о рекурсии и функциях вообще,
если цикл в такой задаче во всём проще???!!!
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
16.11.2013, 19:43     в чём я ошибся #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
если цикл в такой задаче во всём проще???!!!
Ну, можно замутить нечто подобное.
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
16.11.2013, 22:23     в чём я ошибся #8
Цитата Сообщение от ник нэйм Посмотреть сообщение
как её сделать?
Не поверите, открою секрет только вам, только ТСС, в общем, ТСС, нужно ее, ТСС, написать, ТСС.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,419
17.11.2013, 05:00     в чём я ошибся #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Какой олень ввёл моду считать факториалы через рекурсию???
вполне хороший способ показать суть рекурсии
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11832 / 6811 / 769
Регистрация: 27.09.2012
Сообщений: 16,887
Записей в блоге: 2
Завершенные тесты: 1
17.11.2013, 05:47     в чём я ошибся #10
Цитата Сообщение от ник нэйм Посмотреть сообщение
в чём я ошибся
как минимум перепутали операторы:
Цитата Сообщение от ник нэйм Посмотреть сообщение
C++
1
if(n=1)
"=" - это присваивание, а сравнение "=="
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.11.2013, 08:44     в чём я ошибся #11
Цитата Сообщение от Croessmah Посмотреть сообщение
как минимум перепутали ...
... переменную с функцией. И это fact.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.11.2013, 03:27     в чём я ошибся #12
Цитата Сообщение от MrGluck Посмотреть сообщение
вполне хороший способ показать суть рекурсии
Вот именно, ё моё!
Если мы сидим на уроке информатики и проходим рекурсию, вполне нормально написать в качестве упражнения рекурсивную функцию факториала. Более того, можно 100500 алгоритмов рекурсивных напридумывать, которые в нормальной жизни реализуются без неё. Короче, любой цикл, наверное, можно заменить рекурсией и показать её суть... но зачем, блин?
Тем более зачем это делаТь, если мы считаем факториал на практике? Под практикой я понимаю ситуацию, когда в первую очередь тебе нужно получить значение факториала для дальнейших вычислений, а не продемонстрировать, например, знание рекурсивных алгоритмов учителю. Рекурсия в вычислении факториала проигрывает циклическим итерациям во всём: как в скорости алгоритма, так и в наглядности для человека. Т.к. само определение факториала даётся с использованием итерации: n!=1*2*3*...*n типичный цикл! (А, например, n!=(n-1)!*n это уже лишь следствие из определения.
Короче, о чём это я? Для рекурсии есть чисто рекурсивные алгоритмы, в которых вся суть алгоритма в рекурсии: быстрая сортировка, сортировка слиянием, обход дерева и подобные... сами идеи этих алгоритмов формулируются через понятие рекурсии, без которой понять и реализовать эти алгоритмы на порядок сложнее, емли вобще возможно!
Их и надо писать через рекурсию, а не какой-то факториал!
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,419
18.11.2013, 03:33     в чём я ошибся #13
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Короче, любой цикл, наверное, можно заменить рекурсией и показать её суть...
Любая рекурсия преобразуется в стек и наоборот

Добавлено через 1 минуту
Дело в том, что понять на примере факториала куда проще, не вникая в скорее всего еще не изученные понятия, такие как бинарное дерево, быстрая сортировка и т.д.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.11.2013, 04:31     в чём я ошибся #14
Ну да, понять проще. Все поняли рекурсию, детишки? А теперь используйте её по назначению, а те программы, где вам предлагали считать сумму чисел от 1 до N считать рекурсией, забудьте! Это был лишь пример. Цикл быстрее и понятней.

Добавлено через 1 минуту
MrGluck, согласен?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2013, 08:03     в чём я ошибся
Еще ссылки по теме:

C++ Ошибка при компиляции!Подскажите где ошибся?
Ошибся в цикле for C++
Где я ошибся? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,419
18.11.2013, 08:03     в чём я ошибся #15
Мне именно так и преподавали. С оговоркой на то, что рекурсивный вариант в данном конкретном примере неоптимален.
Yandex
Объявления
18.11.2013, 08:03     в чём я ошибся
Ответ Создать тему
Опции темы

Текущее время: 13:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru