|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.02.2010, 20:14 | #1 |
Пользователь
Регистрация: 06.12.2009
Сообщений: 11
|
Рекурсивная функция
Пыталась сделать задание б), но компилятор указывает на ошибку!!!Подскажите, как надо переделать, плиз!
Определить рекурсивную функцию: а)вычисления суммы цифр натурального числа; б)вычисления количества цифр натурального числа. разработать программу с заданными функциями. Код:
Последний раз редактировалось Stilet; 15.02.2010 в 08:46. |
13.02.2010, 20:49 | #2 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
а)
Код:
|
14.02.2010, 14:24 | #3 |
Пользователь
Регистрация: 06.12.2009
Сообщений: 11
|
Спасибо Вам большое!!!
Я пыталась сделать по аналогии задания (а), хотела поставить счетчик, чтоб посчитать количество цифр, но у меня, к сожалению, не вышло...=( как вообще ставить счетчик в рекурсивной функции?? |
14.02.2010, 15:20 | #4 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Не за что
Счётчик (если имеется в виду счётчик цикла) в этой задаче не нужен совершенно!! Рекурсия - это, вообще-то, шаманство Какие-то общие "как" здесь трудно определить. Два главных вопроса обычно нужно решить: 1.1 При каком условии нужно из ф-ии выходить? 1.2 Что при этом возвращать? 2.1 При каком условии нужно себя снова вызывать? 2.2 Что при этом себе передавать? 1.1, 2.1 и 2.2 в обеих Ваших задачках совершенно одинаковы По-поводу 1.2 - как скажете. Хотите сами додуматься - посадюжничаю ещё немного :-P ПопрОсите написать - напишу |
14.02.2010, 17:44 | #5 |
Пользователь
Регистрация: 06.12.2009
Сообщений: 11
|
Честное слово, я пыталась, мудрила и безрезультатно(( там нужно что то дописать, а что именно я не знаю! =( выводит 1 и все =(
#include <iostream> using namespace std; /*int fa( int x ) { if ( x < 10 ) return x; else return x%10 + fa( x/10 ); }*/ int f( int k) //задание б) { if ( k < 10 ) return 1; else return f(k/10); } int main() { int a; cout << "Vvedite a\n"; cin >> a; //cout << "Summa tsifr chisla " << a << " rawna " << fa( a ) << endl; cout << "kol-vo tsifr v chisle " << a << " rawno " << f( a ) << endl; return 0; } Help me, please!!!! не мучайте меня =))))) |
14.02.2010, 18:01 | #6 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Должен абсолютно серьёзно сказать, что "мудрите" Вы - в абсолютно верном направлении. Возьмите двузначное число, прокрутите его через Вашу нынешнюю рекурсивную процедурку и допишите в ней одну цифру и один знак арифметической операции!
Не напишете - в угол отправлю :-P |
14.02.2010, 18:07 | #7 |
Пользователь
Регистрация: 06.12.2009
Сообщений: 11
|
Ааааааа.........УРААААА!!!!!! =))))))))) у меня получилось =)))))))
я дописала "+1" и все вышло!!!!! =))))))) Спасибо Вам большое!!! =)))) P.S. хахаха =))))))) не удалось вам меня в угол поставить =Р =) |
14.02.2010, 18:23 | #8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Молодец!
В угол - всё равно :-P За то что тегами "[CODE]" не пользуетесь. "Будет трудно - зови. Поможем!" Удачи! |
14.02.2010, 18:44 | #9 |
Пользователь
Регистрация: 06.12.2009
Сообщений: 11
|
Еще раз спасибо!!! Буду стараться исправляться!!!
P.S. вредные Вы!!! =)))) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсивная функция Делфи | Asira | Помощь студентам | 2 | 15.12.2009 17:43 |
Си++. Рекурсивная функция. | Diamond2107 | Помощь студентам | 6 | 02.12.2009 19:48 |
Задача (рекурсивная) | Witaliy | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.01.2009 06:18 |