Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 10:00   #1
student2008
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 31
Вопрос Рекурсия в QBasic

Здравствуйте, нужна помощь с рекурсивной программой в QBasic. Вот собственно задание:
Описать рекурсивную функцию DigitSum(K) целого типа, которая находит сумму цифр целого числа K, не используя оператор цикла. С помощью этой функции найти суммы цифр для пяти данных целых чисел.

Кое-что удалось написать, но нужно как-то доделать:

FUNCTION DigitSum (number AS INTEGER)
IF number < 10 THEN
result = number
ELSE result = (number MOD 10) + DigitSum(number / 10)
END IF
END FUNCTION
student2008 вне форума Ответить с цитированием
Старый 13.04.2010, 17:36   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
IF number < 10 THEN
а если число -213, крах твоей функции, т.е. несрабатывание?

а в принципе решение правильно, или у тебя че-то не работает? опиши суть проблемы
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 14.04.2010, 10:18   #3
student2008
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 31
По умолчанию

Надо наверно как-то организовать ввод этих целых чисел, и вывод результата вычислений на экран. Когда запускаю программу, появляется просто тёмный экран.
student2008 вне форума Ответить с цитированием
Старый 14.04.2010, 10:21   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Print x - вывод на экран переменной х, можно константы Print "Hello World"
Input x - Ввод данных с клавиатуры, вводить нужно в соответствии с типом переменной (то есть для строк Input x$)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.04.2010, 11:18   #5
student2008
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 31
По умолчанию

Вот, доделал, но почему-то какое бы число я ни ввёл, выдаёт, что результат=0. Объясните пожалста что я не так делаю?

DECLARE FUNCTION DigitSum! (number AS INTEGER)
PRINT "Vvedite chislo"
INPUT number%
FUNCTION DigitSum (number AS INTEGER)
IF number < 10 THEN
result! = number
ELSE result! = (number MOD 10) + DigitSum(number / 10)
END IF
END FUNCTION
PRINT "resultat="; result!
END
student2008 вне форума Ответить с цитированием
Старый 14.04.2010, 12:38   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Потому что нет самих вычислений.
Попробуй исправить:
PRINT "resultat="; DigitSum(number%)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.04.2010, 14:31   #7
student2008
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 31
По умолчанию

Всё равно ноль выдаёт, но спасибо за помощь и что не прошли мимо, хоть что-то можно будет сдать=)))
student2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсия -Spirit- Помощь студентам 1 14.01.2010 16:40
Рекурсия seeton Помощь студентам 0 08.12.2009 17:41
Рекурсия. Си. MAKEDON Помощь студентам 5 03.06.2009 17:52
Рекурсия vitekbest Помощь студентам 1 30.05.2008 22:22
Рекурсия Pravednik Помощь студентам 3 21.01.2008 14:18