Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/40: Рейтинг темы: голосов - 40, средняя оценка - 4.78
22 / 22 / 2
Регистрация: 08.03.2011
Сообщений: 114

Рекурсивная функция умножения целых чисел

13.08.2012, 19:57. Показов 8463. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать рекурсивную функцию умножения двух целых чисел.
Вот, что у меня получилось :
C++
1
2
3
4
5
6
7
int mul(int a, int b)
{
    if (b == 1)
        return a;
    else
        return a + mul(a, b - 1);
}
Но эта функция работает только для целых чисел.


C++
1
2
3
4
5
6
7
int mul(int a, in b)
{
    if (b == 1)
        return a;
    else
        return mul(a * b, b / b);
}
Эта функция работает, но она не логичная... по сути я просто умножаю 2 числа
C++
1
a * b
.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int mul(int a, int b)
{
    if (b > 0)
        if (b == 1)
            return a;
        else
            return a + mul(a, b - 1);
 
    if (b < 0)
        if (b == -1)
            return 0 - a;
        else
            return 0 - (a - mul(a, b + 1));
}
Эта функция тоже работает... но она мне тоже не нравится

Как сделать, чтоб использовался только один оператор if-else и не использовались оп-ции умножения или деления ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.08.2012, 19:57
Ответы с готовыми решениями:

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

Рекурсивная функция вычисления умножения элементов одномерного массива
Реализовать рекурсивную функцию вычисление умножения элементов одномерного массива, - текст задания. Нужно сделать с помощью функций, то...

Рекурсивная функция. Возвести число в степень путём многократного умножения самого на себя
помогите #include&lt;iostream.h&gt; int muFunc(int x ,int y ); int main () { short int x , y , z; cout&lt;&lt;&quot; vedit...

3
 Аватар для lom
15 / 15 / 6
Регистрация: 28.03.2012
Сообщений: 52
13.08.2012, 20:38
Цитата Сообщение от wep6ak Посмотреть сообщение
Нужно написать рекурсивную функцию умножения двух целых чисел.
Вот, что у меня получилось :
C++
1
2
3
4
5
6
7
int mul(int a, int b)
{
    if (b == 1)
        return a;
    else
        return a + mul(a, b - 1);
}
Но эта функция работает только для целых чисел.

Как сделать, чтоб использовался только один оператор if-else и не использовались оп-ции умножения или деления ?
А Вы пробовали изменять тип на вещественный, говорят, что помогает
C++
1
2
3
4
5
6
7
float mul(float a, float  b)
{
    if (b == 1)
        return a;
    else
        return a + mul(a, b - 1);
}
а нет, извините, не прав

Добавлено через 10 минут
по сути, первый и третий методы одинаковы, но третий еще и для отрицательных
1
Нуб со стажем
 Аватар для kent
36 / 34 / 10
Регистрация: 19.02.2012
Сообщений: 118
13.08.2012, 21:05
немножко запутанно:
C++
1
2
3
4
5
6
7
8
int mul(int a,int b){
    int sign;
    sign=a/abs(a)*b/abs(b);
    if(abs(a) == 1)
        return sign * b;
    else
        return sign * (abs(b) + mul(abs(abs(a)-1),abs(b)));
}
1
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.08.2012, 21:31
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int mul(int a, int b)
{
   return a == 1 ? b : b + mul(a - 1, b);
}
 
int main()
{
   int a, b, rez;
   scanf("%d%d", &a, &b);
   if (a == 0 || b == 0)
      rez = 0;
   else if (a > 0)
      rez = mul(a, b);
   else if (b > 0)
      rez = mul(b, a);
   else rez = mul(-a, -b);
   printf("rez = %d\n", rez);
   return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2012, 21:31
Помогаю со студенческими работами здесь

Рекурсивная функция: вычисление чисел Фибоначчи
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; int fib(int n) { system(&quot;chcp 1251 &gt; nul&quot;); if (n == 1) ...

Рекурсивная функция вычисления чисел Фибоначчи
#include &lt;iostream&gt; int fibonacci(int number) { if (number == 0) return 0; // базовый случай (условие завершения) ...

Рекурсивная функция, которая посчитает сумму чисел от N до M
Помогите сделать. Рекурсивная функция, которая посчитает сумму чисел от N до M Пользователь вводит эти два числа Первое число: 4 ...

Смоделировать операцию умножения двух целых чисел
Смоделировать операцию умножения двух целых чисел длиной до 30 десятичных цифр каждое. Результат выдать в форме +\- 0.m E K, где длина...

Рекурсивная функция, которая возвращает сумму n чисел Фибоначчи
Помогите решить задачу Написать рекурсивную функцию, которая возвращает сумму n чисел Фибоначчи. Число n принимается в качестве...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru