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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 18:55   #1
Leonardos
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию Программа на Си

Доброго времени суток, не могли бы вы сказать, что в этом коде не так?
Когда задаю n=10 или n=14 например а m=любое число, то получется почему-то в два раза увеличенное n, сложенное с m, мне же нужно, чтоб они просто складывались

#include <stdio.h>
int F(int n, int m);
int main()
{
int n,m;
printf("n="); scanf("%d", &n);
printf("m="); scanf("%d", &m);
printf("%d\n", F(n,m));
return 0;
}

int F(int n, int m)
{
if (n == 2)
return 1;

if (n%2==1)
return m;

return F(n/2 + 1, m + n);
}
Leonardos вне форума Ответить с цитированием
Старый 27.11.2012, 19:16   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
return F(n/2 + 1, m + n);
так напишите
Код:
return (m + n);
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 27.11.2012, 19:27   #3
Leonardos
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию

к сожалению пишет ошибку. Якобы несоответсвующее кол-во аргументов под функ-ей F или что-то в этом роде
Leonardos вне форума Ответить с цитированием
Старый 27.11.2012, 20:29   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
int F(int n, int m)
{
  if (n == 2)
	  return 1;
  if (n%2==1)
	  return m;
  return F(n/2 + 1, m + n);
}
Здесь рекурсия, т.е когда функция вызывает сама себя. Мне кажется она вам тут совсем не нужна. Какое условие вашей задачи?
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 27.11.2012, 20:31   #5
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Цитата:
Сообщение от Leonardos Посмотреть сообщение
к сожалению пишет ошибку. Якобы несоответсвующее кол-во аргументов под функ-ей F или что-то в этом роде
Если у вас такое выдаёт, то, скорее всего, вы пишете не так
Код:
return (m + n);
А вот так:
Код:
return F(m + n);
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 27.11.2012, 20:48   #6
Leonardos
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию

задание то что для второго варианта
Изображения
Тип файла: jpg Безымянный.jpg (34.6 Кб, 136 просмотров)
Leonardos вне форума Ответить с цитированием
Старый 27.11.2012, 20:56   #7
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

ну тогда у вас все правильно. Допустим вы подаете в функцию n=14 и m=10.
f(14,10) вызывает функцию f(8,24), которая вызывает функцию f(5,32), которая, в свою очередь возвращает 32. Это и ответ.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа как программа. вопрос leonidsm Общие вопросы C/C++ 5 02.10.2012 21:30
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38