Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
Microthel
0 / 0 / 1
Регистрация: 06.10.2014
Сообщений: 63
1

Ошибка при подсчете формулы (Рекурсия)

25.03.2015, 22:09. Просмотров 415. Ответов 2
Метки нет (Все метки)

Доброго времени суток! Программа вместо того чтобы суммировать значения в знаменателе, умножает их.
Подскажите пожалуйста как нужно прописать чтобы все подсчитывалось верно. Ибо на калькуляторе выходит одно, а компилятор выдает другое число.

Задача заключается в следующем:
Задано натуральные числа n и m. Разработать программу для вычисления значений заданного выражения.
При исчислении выражения использовать рекурсивные процедуры или функции.

Формула:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{3^m}{\sqrt{1!+\sqrt{2!+...+\sqrt{n!}}}}

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    GroupBox1: TGroupBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var n,m,i:integer;
rez:double;
 
function Fact(n:integer):longint;
begin
  if (n=1) or (n=0) then result:=1
  else result:=fact(n-1)*n;
end;
 
function kor(i,n:integer):double;
begin
if (i=n)  then result:=sqrt(n)
else result:=sqrt(i+kor(i+1,n));
end;
 
begin
n:=strtoint(edit1.Text);
m:=strtoint(edit2.Text);
rez:=(power(3,m))/(kor(1,(fact(n))));
edit3.Text:=floattostr(rez);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2015, 22:09
Ответы с готовыми решениями:

Ошибка при подсчете
скажите как правильно записать выражение а то вылитает ошибка ...

ошибка при подсчете матриц
Есть две матрицы А и В (3х3) надо сформировать матрицу С за этим условием С=А*2+В^2, программа...

Ошибка "is not a valid integer value" при подсчете сумму столбцов
heelp pliz вот горе проект

Рекурсия,проверка формулы
В строке записана формула следующего вида : <формула>::=<терм>/(<формула><знак><терм>)...

Ошибка в подсчете нечетных элементов в массиве
Сформировать из элементов матрицы одномерный массив, каждый элемент которого - это количество...

2
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27045 / 18086 / 7150
Регистрация: 22.10.2011
Сообщений: 31,853
Записей в блоге: 6
26.03.2015, 19:01 2
Microthel,
Delphi
1
2
3
4
5
function kor(i,n:integer):double;
begin
  if (i > n)  then result:=0
  else result:=sqrt(fact(i)+kor(i+1,n));
end;
, так будет правильнее... И вызов:
Delphi
1
rez:=(power(3,m))/(kor(1,n));
0
Narimanych
422 / 338 / 172
Регистрация: 23.03.2015
Сообщений: 1,132
28.03.2015, 15:15 3
Volvo,

Если обобщить формулу для İ>1
тогда result:=sqrt(fact(i)+kor(i+1,n));

приведет к неправильному ответу.

Пробовал изменить ф-ю на

i:=n-1;
if i<1 then result:=0 else result:=sqrt(fact(n-i)+kor(n-(i-1),n));
end;


но что-то не так. Если можно, помогите разобраться.

Спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2015, 15:15

Рекурсия: Вычислите значение заданной формулы
Вводимая последовательность символов представляет собой формулу пока- занного ниже вида (М...

Некорректный вывод при подсчете суммы цифр целого числа
Подсчет суммы цифр 3 целых чисел, но при выборе даты и нажатия кнопки в Label4 выводится 0 ...

Ошибка при подсчете элементов массива
Помогите исправить задачу,.. когда арккосинус вывожу из комментария программа запускается но при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru