Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 2
Регистрация: 16.12.2013
Сообщений: 23
1

Исправить ошибки в программе факториала

06.02.2014, 02:45. Показов 669. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите исправить ошибки а то не могу понять что не так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public  long silnia(byte n) {
            if (n == 0 || n == 1) {
                silnia = 1;//тут silnia подкрашивает красным
            }
            else if (n > 1)
            {
                silnia = n * silnia(n - 1);//тут тоже silnia(n - 1) подкрашивает красным
            }
            else
            { }
            }//end void
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2014, 02:45
Ответы с готовыми решениями:

Исправить ошибки в коде расчета факториала
Создать вспомогательный класс Function. Kласс должен содержать метод Factorial, в котором...

Исправить ошибки в программе, почему-то подчеркивает красным
Задача:Даны целые значения R,F,A,B и целые массивы C, D. Опpеделить значения массивов X, Y по...

Помогите исправить ошибки компиляции в простой программе
Здравствуйте, такая вот ошибка, пишу код, все как обычно заготовка кода и пробую добавить свой...

Исправить ошибки в программе о исключительных ситуациях (вычисление выражения)
Задание: Создать массив объектов, найти результат выражения для каждого объекта, вывести результат...

7
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
06.02.2014, 03:28 2
Вариант 1
C#
1
2
3
4
        public static Int64 silnia(Int64 n)
        {
            return (n < 2)? 1: n * silnia(n - 1);
        }
Вариант 2 (без особых изменений)
C#
1
2
3
4
5
6
7
8
9
10
11
        public static Int64 silnia(Int64 n)
        {
            if (n < 2)
            {
                return 1;
            }
            else
            {
                return n * silnia(n - 1);
            }
        }
0
44 / 44 / 19
Регистрация: 20.01.2014
Сообщений: 87
06.02.2014, 03:33 3
Arek17, Когда условие n > 1, станет ложным управление перейдет к последней инструкции в стеке вызовов, а там n * (возвращённое значение из silina(n-1)).
А что она вернёт? Правильно, ничего, ибо инструкции return нет. Вот и думайте теперь
0
Заблокирован
06.02.2014, 09:37 4
Arek17, а что такое silnia?

C#
1
silnia = 1;//тут silnia подкрашивает красным
C#
1
silnia = n * silnia(n - 1);
похоже, что это странный вызов функции, вместо
C#
1
silnia=
напишите:
C#
1
return
и вам точно нужно
C#
1
public  long silnia(byte n)
может стоит заменить на:
C#
1
public static int silnia(int n)
Далее вы столкнетесь с ошибкой:
Код
 не все ветви кода возвращают значение
ваш пустой последний else ничего не возвращает. Избавьтесь от него:

C#
1
2
3
4
5
6
7
8
9
10
        public static int silnia(int n) {
            if (n > 1)
            {
                return n * silnia(n - 1);
            }
            else
            {
                return 1;
            }
        }
0
1 / 1 / 2
Регистрация: 16.12.2013
Сообщений: 23
06.02.2014, 14:06  [ТС] 5
Ev_Hyper, silnia ето факториал.
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
06.02.2014, 15:10 6
Arek17, вам не про это писали. Не путайте синтаксис Visual Basic и C#. В C# методы возвращают значения другим способом.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.02.2014, 15:13 7
Arek17, вместо
C#
1
silnia = XXX
используйте
C#
1
return XXX
0
1 / 1 / 2
Регистрация: 16.12.2013
Сообщений: 23
06.02.2014, 15:52  [ТС] 8
Psilon, не работает((

Добавлено через 9 минут
Зделал!))

C#
1
2
3
4
5
6
7
8
private long silnia2(long N) {
             long rezult;
             rezult = 1;
             for (long n = 1; n <= N; n++) {//n++ = n = n +1
                 rezult = rezult * n;
             }
             return rezult;
        }
0
06.02.2014, 15:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2014, 15:52
Помогаю со студенческими работами здесь

Помогите исправить ошибки в программе для чтения файла
Здравствуйте! Пишу программу для чтения файла. Пожалуйста укажите на ошибку в коде. Времени не...

Нахождение факториала - исправить ошибки в коде
Помогите исправить прогу, она должна искать факториал.а потом факториал предствить ввиде...

Исправить ошибки в программе
#include&lt;stdio.h&gt; void NewMatr(int **matr, int size) { for(int i=0;i&lt;size;i++)...

Исправить ошибки в программе
#include &lt;iostream&gt; using namespace std; char a; int k, i; int main() { setlocale(0, &quot;&quot;); ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru