Рекурсивная функция выводит неверное значение - PullRequest
0 голосов
/ 10 марта 2019

В этом коде выводом является 'r' вместо 'r0'

Вместо того, чтобы делать операции, он выводит мне первое 'r' (равно 100) и не выполняет процесс. Я пытаюсь запрограммировать такую ​​операцию, как (x_0 = x + (nt² / (2 (x + (n (t-1)) ² / 2 (x + (n (t-3)) ² / 2 (x + (n (t -4) ² ...) ²) ²) ²) ²) ²) ²) ²) ²) ²) в котором процесс повторяется до тех пор, пока переменная 't' не станет '0' (потому что каждый раз, когда операция выполняется 't 'получить' -1 ').

#include <iostream>
#include "math.h"
using namespace std;
int operation(float r,
float r0,
float recursiva,
float operacion,
float recursivaPrincipal2,
float recursivaPrincipal,
float p,
float n,
long long t,
float q,
float potenciaQ,
float c,
float potenciaC,
float t2,
float division);

float r = 100;
float t = 10000;
float r0;
float recursiva;
float operacion;
float recursivaPrincipal2;
float recursivaPrincipal;
float p;
float n;
float q;
float potenciaQ;
float c;
float potenciaC;
float t2;
float division;

int main() {
    r0 = r + operacion;
    potenciaQ = pow(10,10);
    q = 6 * potenciaQ;
    potenciaC = pow(10,2);
    c =  5 * potenciaC;
    while (t = 10000, t = t - 1, t > 0) {
        t2 = t * t;
        n = q * t2;
        operacion = n / recursivaPrincipal;
        recursivaPrincipal2 = recursiva * recursiva;
        recursivaPrincipal = 2 * recursivaPrincipal2;
        recursiva = r + operacion;
        if (t == 0) {
            system("pause");
            return 0;
        }
        cout << "Solucion: " << r0 << endl;
    }
}

я хочу сделать что-то подобное

Мне очень жаль, если этот код вас обидел (комментарии выглядят так), но я не очень хорош, это мой первый код на С ++ (и последний, я думаю)

1 Ответ

0 голосов
/ 10 марта 2019

Ответ основан на том, что я получил от вашего вопроса

Пожалуйста, расширьте свое математическое выражение для t = 3 и добавьте его изображение

безусловно, то, что я получил от твоего выражения, тебе нужно это

float func(int t,int n,int x)
 {
  if (t==1)
  {
   return (x + (n/2)*(n/2)) * (x + (n/2)*(n/2));
  }

  return x + (n*t*t)/(2*func(t-1,n,x)) ;
 }

Согласно фотографии, которую ты загрузил, это мой код

Не используйте 0 для n

#include<iostream>

using namespace std;

double partSolver(int x,int p, int n)
{
   if(n==0)  return 2*x*x;
   double val = x - ( (p*n*n) / partSolver(x,p,n-1) );
   return 2*val*val ;
}

double solver(int x,int p,int n)
{
   return (n*n * 2) / partSolver(x,p,n-1);
}

int main()
 {
  cout<<"The Solution is: "<<solver(3,2,1)<<endl;

  return 0;
 }
...