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

Преобразовать в тернарную условную операцию - C++

Восстановить пароль Регистрация
 
Leslie
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 16
03.01.2012, 14:42     Преобразовать в тернарную условную операцию #1
Добрый день!
Я столкнулся с проблемой преобразования функции factorial в условную операцию. Ругается на return'ы.
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <stdlib.h>
#include <iomanip>
unsigned long factorial(unsigned long);
using namespace std;
main()
{  
  for (int m = 0; m <= 10; m++)
  cout << setw(2) << m << "! = " << factorial(m) << endl;
  system("PAUSE");
  return 0;
}
 
  unsigned long factorial(unsigned long number)
  {
    if (number <= 1)
      return 1;
    else
      return number * factorial(number - 1);
  }
Кстати, возможны ли случаи, когда нельзя сделать преобразования из if\else? И можно ли пользоваться данным методом, если if\else несколько?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2012, 14:42     Преобразовать в тернарную условную операцию
Посмотрите здесь:

C++ Объясните пожалуйста операцию -> и ::
Найти ошибку и перегрузить операцию C++
C++ Переопределить операцию сложения
Помогите перегрузить операцию присваивания C++
C++ Оператор /=. Обьясните операцию.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asm
 Аватар для asm
62 / 35 / 1
Регистрация: 05.10.2011
Сообщений: 137
03.01.2012, 15:02     Преобразовать в тернарную условную операцию #2
Цитата Сообщение от Leslie Посмотреть сообщение
for (int m = 0; m <= 10; m++)
заменить на
C++
1
for (int m = 2; m <= 10; m++)
if (number <= 1)
return 1;
else
return number * factorial(number - 1);
на
C++
1
return (number <= 1) ?  1 : number * factorial(number - 1);
Добавлено через 2 минуты
Цитата Сообщение от asm Посмотреть сообщение
for (int m = 2; m <= 10; m++)
m=1 тоже можно, все в условии
Цитата Сообщение от Leslie Посмотреть сообщение
number <= 1
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.01.2012, 15:13     Преобразовать в тернарную условную операцию #3
Цитата Сообщение от Leslie Посмотреть сообщение
И можно ли пользоваться данным методом, если if\else несколько?
Да, можно. Тогда будут вложенные операции. Например:
C++
1
2
3
4
5
6
7
if ( n >= 5 )
    if ( n == 10 )
        n *= 2;
    else
        n *= 3;
else
    n = 0;
заменяется на:
C++
1
n = ( n >= 5 ) ? ( ( n == 10 ) ? ( n * 2 ) : ( n * 3 ) ) : ( 0 );
Leslie
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 16
03.01.2012, 15:13  [ТС]     Преобразовать в тернарную условную операцию #4
Спасибо, всё заработало.
Yandex
Объявления
03.01.2012, 15:13     Преобразовать в тернарную условную операцию
Ответ Создать тему
Опции темы

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