Страница 1 из 1

Помогите с рекурсией

Добавлено: 27 окт 2009, 20:35
Машенька
Обчислить функцию 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,sum=0;
if(m==1)
return 1;
else
for (int i=2; i<=m; i++)
sum += m%i;
return sum;

}
void main()
{int m; clrscr();
cout<<"\n Vvedite pologitel'noe znachenie m=";
cin>>m;
cout<<"Poluchennoe znacenie "<<Function(m);
getch();
}

ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО !!!!!!!!!

Re: Помогите с рекурсией

Добавлено: 30 окт 2009, 11:19
atavin-ta
Не пойму, зачем реуксия здесь.

Re: Помогите с рекурсией

Добавлено: 30 окт 2009, 11:53
DexterUa
(сумма целых частей от деления m на i)
Что-то мне кажется что там должно быть m/i, а не m%i.
Если так, то могу код с рекурсией сбросить

Re: Помогите с рекурсией

Добавлено: 02 ноя 2009, 10:34
Romeo
&quot писал(а):Не пойму, зачем реуксия здесь.
Часто такие искусственные требования вводят преподавателями для того, чтобы студенты разобрались с темой занятия. Это вполне нормальный подход.
&quot писал(а):Что-то мне кажется что там должно быть m/i, а не m%i.
Я тоже так думаю.

Кидай код, может он ещё будет полезен топик стартеру.

Re: Помогите с рекурсией

Добавлено: 02 ноя 2009, 10:49
DexterUa

Код: Выделить всё

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
//твоя - целая часть помойму должна быть m/i а не m%i, если я правильно понял условие
int Function(int m)
{
int sum=0;
if(m==1)
return 1;
else
for (int i=2; i<=m; i++)
sum += m/i;
return sum;

}
//вот рекурсия для варианта m/i
int Function2(int m)
{
	int sum=1;
	if(m==1)return 1;
	if(m==2)return 1;
	else
	{
	for(int i=2;i<m/2;i++)
		if(m%i==0)sum++;
	sum+=Function2(m-1);
	}
	return sum;
}

void _tmain()
{
	int m; 
	printf("\n Vvedite pologitel'noe znachenie m=");
	scanf("%i",&m);
	printf("Poluchennoe znacenie Function1: %i\nPoluchennoe znacenie Function2: %i\n",Function(m),Function2(m));
	getch();
}

Заменил в 1-ой функции % на /
Вторая рекурсивная, считает дольше и не красиво наверно.. но зато рекурсия :)

Re: Помогите с рекурсией

Добавлено: 03 ноя 2009, 10:00
atavin-ta
Я тоже задаю требования по рекурсии. Типа сделать две версии факториала: рекурсивную и явно-циклическую и сравнить. Но у меня в таких случаях сама задача имеет рекурсивную постановку. В частности, факториал в математике имеет рекурсивное определение. Здесь же не понятоно, где рекурсия вообще может быть.

Re: Помогите с рекурсией

Добавлено: 23 ноя 2009, 21:05
Машенька
Спасибо ))