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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2009, 10:48   #1
masha17
Пользователь
 
Аватар для masha17
 
Регистрация: 25.12.2008
Сообщений: 17
Восклицание Помогите реализовать рекурсию

Обчислить функцию f(m), которая определена для положительных чисел таким образом, что если m=1, то f(m)=1 , если m>=2, то cчитаем f (сумма целых частей от деления m на i), где элементы от i=2 до m

Вот набросок но ошибку выдает....

Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>
int Function(int m,int i, int sum)
{
	if(m>1)
	 if(i!=m)
		 return sum += (int)m/i+Function(m/i,++i,sum);
	 else return 1;
}
void main()
{int m,i=2,sum=0; clrscr();
	 cout<<"\n Vvedite pologitel'noe znachenie m=";
	 cin>>m;
	 cout<<"Poluchennoe znacenie "<<Function(m,i,sum);
	 getch();
}
masha17 вне форума Ответить с цитированием
Старый 30.10.2009, 11:00   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

а какая собсно ошибка ? выложи вывод компилятора. Мне кажется у вас не подключено пространство имен std для cin и cout

так работает

Код:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
int Function(int m,int i, int sum)
{
	if(m>1)
	 if(i!=m)
		 return sum += (int)m/i+Function(m/i,++i,sum);
	 else return 1;
}
int main()
{
     int m,i=2,sum=0;
     //clrscr();
	 cout<<"\n Vvedite pologitel'noe znachenie m=";
	 cin>>m;
	 cout<<"Poluchennoe znacenie "<<Function(m,i,sum);
	 getch();
 	 return 0;
}

Последний раз редактировалось NiCola999; 30.10.2009 в 11:05.
NiCola999 вне форума Ответить с цитированием
Старый 30.10.2009, 13:31   #3
Chea
 
Регистрация: 28.09.2009
Сообщений: 4
По умолчанию

Судя по заданию функция должна выглядеть так:

Код:
int Function (int m,int i)
{
if (!i) return 0;
return (int) m/i+Function(m,--i);
}
Вызывать в main надо как Function (m,m);

Ошибочка - условие надо добавить

Код:
int Function (int m,int i)
{
   if (m==1) return 1;
   if (!==1) return 0;
   return (int) m/i+Function(m,--i);
}

Последний раз редактировалось Stilet; 30.10.2009 в 13:49.
Chea вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на рекурсию(( kinza Помощь студентам 6 08.06.2009 09:51
Ошибка в программе на рекурсию vitekbest Помощь студентам 13 14.06.2008 20:54
Задача на рекурсию. KoHgpaT Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2006 20:49