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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 23:52   #1
theroket
 
Регистрация: 03.10.2008
Сообщений: 5
По умолчанию Не работает рекурсия

Требуется рекурсивно подсчитать суму по t от 2 до n квадратов

Код:
#include <stdio.h>
#include <math.h>

double f(int t)
{
  if (t<2) return 0;

  return pow(t,2) + f(t-1);
}

void main()
{
  int n;

  printf("n=");
  scanf("%d",n);

  printf("f=%-6.2f",f(n));
}

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось theroket; 19.12.2010 в 16:29.
theroket вне форума
Старый 19.12.2010, 02:43   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

И в чем вопрос , что не правильно работает ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума
Старый 19.12.2010, 11:24   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
И в чем вопрос , что не правильно работает ?
думаю, что проблема в том, что после выдачи результата программа сразу закрывается

theroket
Попробуйте в конце, после printf добавить ожидание ввода..

ну и ещё пара замечаний.
Квадрат натурального числа ВСЕГДА будет натуральным числом.
Зачем Вы double используете?! Да ещё и после запятой знаки вывести пытаетесь..

и ещё. Чтобы посчитать квадрат -
подключать Math и дёргать pow - можно, конечно..
Но разве t*t недостаточно?
Serge_Bliznykov вне форума
Старый 19.12.2010, 14:05   #4
theroket
 
Регистрация: 03.10.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от andrewpalkin Посмотреть сообщение
И в чем вопрос , что не правильно работает ?
Функция возвращает 0 при всех n... Проблема, я так понял, не в коде...Может компилятор надо как-то настраиваить для работы с рекурсией?...
Цитата:
Зачем Вы double используете?
Цитата:
разве t*t недостаточно?
Ну это понятно.. на самом деле надо считать более сложную формулу...для начала решил попробовать квадрат, чтобы убедиться в прасильности самой рекурсии...но почему-то возвращается 0
theroket вне форума
Старый 19.12.2010, 14:17   #5
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Попробуй заменить вот это :

Код:
 
double f(int t)
...
printf("f=%-6.2f",f(n));
Вот на это :

Код:
 
int f(int t)
...
printf("f=%d",f(n));
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---

Последний раз редактировалось andrewpalkin; 19.12.2010 в 14:21.
andrewpalkin вне форума
Старый 19.12.2010, 15:25   #6
theroket
 
Регистрация: 03.10.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от andrewpalkin Посмотреть сообщение
Попробуй заменить...
Не помогло...borland с выдает 0... пробовал запускать в билдере...ошибка переполнения стека
theroket вне форума
Старый 19.12.2010, 15:27   #7
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от theroket Посмотреть сообщение
Не помогло...borland с выдает 0... пробовал запускать в билдере...ошибка переполнения стека
А какое число ты вводил ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума
Старый 19.12.2010, 16:27   #8
theroket
 
Регистрация: 03.10.2008
Сообщений: 5
По умолчанию

Нашел ошибку (глупую)...Извините за недосмотр...Все дело в
Код:
scanf("%d",&n);

Последний раз редактировалось theroket; 19.12.2010 в 16:31.
theroket вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04
Рекурсия. Не корректно работает прога Driver_09 Помощь студентам 0 23.12.2009 20:02
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
Паскаль. рекурсия. числа. объясните, как работает код [silver beast] Помощь студентам 2 21.01.2009 05:00