Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rekurencja ciąg dalszy

Ostatnio zmodyfikowano 2014-01-27 18:39
Autor Wiadomość
Mutiny
Temat założony przez niniejszego użytkownika
Rekurencja ciąg dalszy
» 2014-01-27 15:24:49

Co powiecie na coś takiego ?
Mam napisać funkcję agm(double *x, double *y, int N)
taką, że jeśli początkowe wartości zmiennych wskazywanych przez x i y są równe, odpowiednio,a_0 i b_0.
to po zakończeniu funkcji znajdą się w nich liczby a_N i b_N zadane wzorem rekurencyjnym.
a_(k+1)=(a_k+b_k)/2 oraz b_(k+1)=sqrt(a_k*b_k) a k=0,1,2,3,4,5,...,N-1
I tego to już serio nie potrafię ruszyć nawet
P-103315
OSA_PL
» 2014-01-27 16:53:54
Interpunkcja trochę utrudnia zrozumienie tej funkcji, ale jeżeli dobrze to zrozumiałem, to ja zrobiłbym to mniej więcej w ten sposób:
C/C++
void agm( double * x, double * y, int N )
{
    if( N > 0 )
    {
        double a_k = * x;
        double b_k = * y;
       
        * x =( a_k + b_k ) / 2.0;
        * y = sqrt( a_k * b_k );
       
        agm( x, y, N - 1 );
    }
}
P-103324
Mutiny
Temat założony przez niniejszego użytkownika
» 2014-01-27 17:31:39
Niezależnie od wartości podawanych zawsze a_k i b_k mają tą samą wartość, chyba że mieszam coś ze wskaźnikami bo w sumie średnio je ogarniam...
C/C++
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void agm( double * x, double * y, int N )
{
    if( N > 0 )
    {
        double a_k = * x;
        double b_k = * y;
       
        * x =( a_k + b_k ) / 2.0;
        * y = sqrt( a_k * b_k );
       
        agm( x, y, N - 1 );
    }
}
int main()
{
    double * x;
    double * y;
    double a = 110.0;
    double b = 10.0;
    x =& a;
    y =& b;
    int n = 8;
    agm( x, y, n );
    printf( "%lf\n", a );
    printf( "%lf\n", b );
    return 0;
}
P-103335
OSA_PL
» 2014-01-27 17:37:10
Spróbuj dać mniejsze n.
P-103337
Mutiny
Temat założony przez niniejszego użytkownika
» 2014-01-27 18:18:53
Fakt dla <=3 działa dla większych podaje to samo...
P-103342
OSA_PL
» 2014-01-27 18:28:13
Precyzja zmiennych, tego nie przeskoczysz, no chyba że napiszesz własną implementację super dokładnych zmiennych.
P-103344
Mutiny
Temat założony przez niniejszego użytkownika
» 2014-01-27 18:39:26
Do tego mi daleko, dziękuje za pomoc :)
P-103345
« 1 »
  Strona 1 z 1