Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
29 / 28 / 8
Регистрация: 06.10.2012
Сообщений: 133

Рекурсия. Поиск загаданного числа

25.10.2012, 19:47. Показов 2041. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вроде бы рекурсия присутствует. Компилятор не ругается. А результат отвратительный. Число не ищется. Где я ошибаюсь? До конца не стал писать, потому что на второй итерации уже ошибка вылезает.

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
30
31
32
33
34
35
36
37
38
39
import java.util.*;
 
public class GuessWord {
 
    public static void main (String args[]) 
        throws java.io.IOException {       // перехват исключений идет сразу за объявлением метода - это не часть блока программы, его не надо в фигурную скобку включать!
            char yes;
            int guess=1;
            int min=1;
            int max=100;
            System.out.println ("Загадана цифра от 1 до 100");
            System.out.println ("Отгадайте: ");
            
            for (int i=0; i<7; i++) {
                int res=(max+min)/2;
                System.out.println ("Число меньше или равно " + res + "? y/n");
                yes=(char) System.in.read(); // считывание символов с клавиатуры
                
                switch(yes){
                    case 'y':
                        min=min;
                        max=res;
                        res=(max+min)/2;
                        break;
                    case 'n':
                        max=max;
                        max=res;
                        res=(max+min)/2;
                        break;
                    default: System.out.println (" Введите y или n ");
                        
                    
            }
            System.out.println ("Ваше число = " + guess);
            
    
}
        }   
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2012, 19:47
Ответы с готовыми решениями:

Бинарный поиск загаданного числа
Я все и вики читал, и у друзей спрашивал. Ни кто толком объяснить не может, что такое бинарный поиск как вообще работает. Вообщем у...

Программа для вычисления загаданного числа
Нужно написать программу для угадывания числа. 1&lt;число&lt;100; Вопросы вводятся типо таких:&quot;ваше число больше 50?&quot;. Помогите...

Рекурсия: поиск минимального числа в списке, содержащем целые числа
Создать рекурсивную реализацию функции поиска минимального числа в списке, содержащем целые числа. В качестве основного шага рекурсии...

7
 Аватар для exiqa
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
25.10.2012, 20:56
и где рекурсия?
0
29 / 28 / 8
Регистрация: 06.10.2012
Сообщений: 133
25.10.2012, 23:54  [ТС]
Цитата Сообщение от exiqa Посмотреть сообщение
и где рекурсия?
Что делать?
0
 Аватар для SpamBot
14 / 13 / 5
Регистрация: 04.10.2012
Сообщений: 29
26.10.2012, 03:17
После ввода букві ответа требует нажатие Enter
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
mport java.util.Scanner;
 
public class GuessWord {
    private static int guess(int min, int max, Scanner in) throws Exception
    {
        if(max - min == 1)
                return max;
        int res = (min + max) / 2;
        System.out.println ("Число меньше или равно " + res + "? y/n");
        char yes = in.nextLine().charAt(0);
        if(yes == 'y' || yes == 'Y')
                return guess(min,res,in);
        else
                return guess(res,max,in);
    }
 
    public static void main (String[] args) throws Exception
    {
            Scanner in = null;
            try {
                System.out.println ("Загадайте число от 1 до 100");
                in = new Scanner(System.in);
                System.out.println("Искомое число: " + guess(1,100,in));
            }finally
            {
                if(in != null)in.close();
            }
    }
}
1
29 / 28 / 8
Регистрация: 06.10.2012
Сообщений: 133
26.10.2012, 09:47  [ТС]
Очень красиво. А можно краткие комментарии:
1. Scanner - это класс из стандартной библиотеки Java? Что он делает?
2. И почему мы объявляем тип переменной in как Scanner?
3. in.nextLine().charAt(0); - двумя методами переменная обрабатывается при вводе с клавиатуры?
4. null = void = пустое значение?


Цитата Сообщение от SpamBot Посмотреть сообщение
После ввода букві ответа требует нажатие Enter
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
mport java.util.Scanner;
 
public class GuessWord {
    private static int guess(int min, int max, Scanner in) throws Exception
    {
        if(max - min == 1)
                return max;
        int res = (min + max) / 2;
        System.out.println ("Число меньше или равно " + res + "? y/n");
        char yes = in.nextLine().charAt(0);
        if(yes == 'y' || yes == 'Y')
                return guess(min,res,in);
        else
                return guess(res,max,in);
    }
 
    public static void main (String[] args) throws Exception
    {
            Scanner in = null;
            try {
                System.out.println ("Загадайте число от 1 до 100");
                in = new Scanner(System.in);
                System.out.println("Искомое число: " + guess(1,100,in));
            }finally
            {
                if(in != null)in.close();
            }
    }
}
0
 Аватар для SpamBot
14 / 13 / 5
Регистрация: 04.10.2012
Сообщений: 29
27.10.2012, 01:46
1. О классе Scanner читаем здесь.
2. Создание объекта класса Scanner.
3. charAt(0) - возвращает первый символ введенной строки.
4. null - пустая ссылка, void здесь ни при чем.
1
29 / 28 / 8
Регистрация: 06.10.2012
Сообщений: 133
27.10.2012, 12:22  [ТС]
Цитата Сообщение от SpamBot Посмотреть сообщение
1. О классе Scanner читаем здесь.
2. Создание объекта класса Scanner.
3. charAt(0) - возвращает первый символ введенной строки.
4. null - пустая ссылка, void здесь ни при чем.
Прогон компилятора:

Загадайте число от 1 до 100 // условно загадаем 12
Ваше число меньше или равно 50 y/n ?
y
Ваше число меньше или равно 75 y/n ? // уже ошибка в математике
y
Ваше число меньше или равно 62 y/n ?
y
Ваше число меньше или равно 68 y/n ?
y
Ваше число меньше или равно 65 y/n ?
y
Ваше число меньше или равно 66 y/n ?
y
Ваше число меньше или равно 65 y/n ?
y
Искомое число 66

В коде ошибок нет. Где-то ошибка в логике.
0
 Аватар для SpamBot
14 / 13 / 5
Регистрация: 04.10.2012
Сообщений: 29
27.10.2012, 14:53
Внимательно копируйте и компилируйте код. Результат его работы таков:
Загадайте число от 1 до 100
Число меньше или равно 50? y/n
y
Число меньше или равно 25? y/n
y
Число меньше или равно 13? y/n
y
Число меньше или равно 7? y/n
n
Число меньше или равно 10? y/n
n
Число меньше или равно 11? y/n
n
Число меньше или равно 12? y/n
y
Искомое число: 12

Еще как вариант - проверьте раскладку клавиатуры, возможно вводите русскую или украинскую 'у' вместо латинской 'y'.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2012, 14:53
Помогаю со студенческими работами здесь

Реализовать интерфейс угадывания числа, загаданного пользователем(на JS)
Требуется создать сайт, который угадывает число, загаданное пользователем. Для этого, программа задаёт пользователю вопросы, ответом на...

Рекурсия: поиск второго максимального числа из заданного набора целых чисел
Напишите рекурсивное решение для поиска второго максимального числа из заданного набора целых чисел. Входные данные: 5 5 8 7 9 3 ...

Вывести все числа от 1 до заданного натурального числа n (рекурсия)
Дано натуральное число n. Выведите все числа от 1 до n (Рекурсия) Ввод - 5 Вывод - 1 2 3 4 5 Как сделать...

Рекурсия поиск пути
Добрый вечер делал по книжке ничего не менял кроме как переименовал входные данные ничего просто не выводит может кто скажет...

Рекурсия: бинарный поиск
Задание: сделать рекурсию бинарного поиска,при вводе числа она должна написать номер числа. У меня получилась так но она не хочет работать....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru