Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 22.03.2015
Сообщений: 55

Альтернатива передачи параметров по ссылке, или как переписать код

11.09.2016, 23:41. Показов 904. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть метод на языке C#, в котором используются передача параметров по ссылке и рекурсия, в каждом шаге которой эти параметры изменяются. Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
static int gcd(int a, int b, out int x, out int y)
        {
            if (a == 0)
            {
                x = 0; y = 1;
                return b;
            }
            int x1, y1;
            int d = gcd(b % a, a, out x1, out y1);
            x = y1 - (b / a) * x1;
            y = x1;
            return d;
        }
Скажите хотя бы в общих чертах, как можно переписать данный код на Java, какие вообще можно придумать альтернативы передачи параметров по ссылке и рекурсии? Можно конечно создать отдельные классы для этих переменных и передавать ссылки на их объекты, но это явно не самая разумная затея. Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2016, 23:41
Ответы с готовыми решениями:

Аналог передачи параметров по ссылке
Здравствуйте. Мне нужно переписать метод, написанный на Delphi, на Java. procedure faindUpak(Var...

функции в языке с: (использовать механизм передачи параметров по ссылке)
реализовать функцию, осущ. поиск в целочисленном массиве 4-го максимума и 3-го минимума. В качестве параметров функции выступают массив и...

Реализовать программу одним из способом передачи параметров в функцию(по адресу,по значению,по ссылке)
Даны координаты вершин двух треугольников. Определить, какой из них имеет большую площадь. #include <math.h> #include...

4
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
11.09.2016, 23:59
Передавайте Integer, а рекурсия в jave есть.
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
12.09.2016, 00:08
Цитата Сообщение от DevAlone Посмотреть сообщение
Передавайте Integer, а рекурсия в jave есть.
Это никак не поможет, т.к. экземпляры Integer - неизменяемые.
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
12.09.2016, 00:25
Цитата Сообщение от Lumber Посмотреть сообщение
Это никак не поможет, т.к. экземпляры Integer - неизменяемые.
точно
0
 Аватар для FatNinja
82 / 82 / 32
Регистрация: 17.02.2016
Сообщений: 226
12.09.2016, 01:13
А зачем для gcd возвращаемые параметры?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class GCDHelper {
 
    public int gcd(int firstNumber, int secondNumber) {
        int maxNumber = Math.max(firstNumber, secondNumber);
        int minNumber = Math.min(firstNumber, secondNumber);
        int gcd = minNumber;
        while (maxNumber % minNumber != 0) {
            gcd = maxNumber % minNumber;
            maxNumber = minNumber;
            minNumber = gcd;
        }
        return gcd;
    }
 
    public int gcd(int... numbers) {
        int result = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            result = gcd(result, numbers[i]);
        }
        return result;
    }
 
}
Или так (рекурсивный):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class GCDHelper {
 
    public int gcd(int first, int second) {
        if (second == 0)
            return first;
        if (first == 0)
            return second;
        if ((first & 1) == 0 && (second & 1) == 0) {
            return gcd(first >> 1, second >> 1) << 1;
        } else if ((first & 1) == 0) {
            return gcd(first >> 1, second);
        } else if ((second & 1) == 0) {
            return gcd(first, second >> 1);
        } else if (first >= second) {
            return gcd((first - second) >> 1, second);
        } else {
            return gcd(first, (second - first) >> 1);
        }
    }
 
    public int gcd(int... numbers) {
        int result = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            result = gcd(result, numbers[i]);
        }
        return result;
    }
 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2016, 01:13
Помогаю со студенческими работами здесь

Передача параметров в функцию по значению, по ссылке или по указателю
Передача параметров в функцию по значению, по ссылке или по указателю. Чем отличаются эти 3 способа. И, если не сложно, привести...

Отличие передачи по ссылке от передачи указателя ?
Чем отличаюся следующие коды? class MyClass{ int val; public: int get_val(){return val;} int set_val(int i){val=i;} }; ...

Как переписать код в одно действие или за меньшее количество строк?
# -*- coding: utf-8 -*- from lxml import html import requests page = requests.get('http://tass.ru/rss/v2.xml') tree =...

Принятие параметров в ссылке и их отправка далее по ссылке без action
Доброго времени суток. У меня есть данный кусок кода &lt;?php if (isset($_GET)) { $_SESSION = $_GET; } $url =...

Как менять местами кнопки в tkinter или же переписать этот код на pygame
Как при нажатии заставить программу запоминать нажатую кнопку и при нажатии следующей менять их местами Фактически я хочу двигать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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 с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru