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

procedura rekurencyjna z jednym argumentem tablicowym

Ostatnio zmodyfikowano 2010-11-18 22:38
Autor Wiadomość
pawelekster
Temat założony przez niniejszego użytkownika
procedura rekurencyjna z jednym argumentem tablicowym
» 2010-11-18 20:24:25
Proszę o pomoc, przykład prostej rekurencji typu:
void przyklad(int tab[])
P-24118
F90M
» 2010-11-18 20:35:41
Silnia
C/C++
long Silnia( int n )
{
    if( n < 1 )
         return 1;
    else
         return n * Silnia( n - 1 );
   
}
P-24119
pawelekster
Temat założony przez niniejszego użytkownika
argument tablica?
» 2010-11-18 20:47:04
C/C++
long Silnia( int n )
{
    if( n < 1 )
         return 1;
    else
         return n * Silnia( n - 1 );
   
}

argumentem ma być tablica jednowymiarowa...
P-24120
F90M
» 2010-11-18 21:20:18
Pośpieszyłem się...

Odwracanie tablicy
C/C++
void OdwrocTablice( int iTablica[], int iIloscElenentow )
{
    if( iIloscElenentow < 2 ) return;
   
    int iTmp = iTablica[ 0 ];
    * iTablica = iTablica[ iIloscElenentow - 1 ];
    iTablica[ iIloscElenentow - 1 ] = iTmp;
    OdwrocTablice( iTablica + 1, iIloscElenentow - 2 );
}
Są dwa argumenty, ale nic innego, z samą tablicą, do głowy mi nie przychodzi.
P-24122
pawelekster
Temat założony przez niniejszego użytkownika
» 2010-11-18 21:29:35
Są dwa argumenty, ale nic innego, z samą tablicą, do głowy mi nie przychodzi.

Czy może dałoby się tablicę zmniejszyć o jeden element i wywołać procedurę odwołującą się do już zmniejszonej tablicy?
P-24123
pawelekster
Temat założony przez niniejszego użytkownika
» 2010-11-18 21:55:51
Można niby tak:

C/C++
/*
Napisz rekurencyjnie program, który wypisze na ekran zawartość tablicy.
        void wypisz_rekurencyjnie(int tab []);
*/

#include<stdio.h>
#include<iostream>
#include<conio.h>
using namespace std;

int elementy[] = { 2, 3, 4, 9, 1, 4, 5 };
int n = sizeof( elementy ) / sizeof( int );
int i = 0;

void wypisz_rekurencyjnie( int tab[] );

int main()
{
    wypisz_rekurencyjnie( elementy );
   
    getch();
    return 0;
}
void wypisz_rekurencyjnie( int tab[] )
{
    if( i < n ) { cout << tab[ i ] << endl; i++; wypisz_rekurencyjnie( tab ); }
}

???
P-24124
F90M
» 2010-11-18 21:57:31
Czy może dałoby się tablicę zmniejszyć o jeden element i wywołać procedurę odwołującą się do już zmniejszonej tablicy?
W tym wypadku musisz przekazać do funkcji wielkość tablicy, inaczej skąd funkcja ma wiedzieć kiedy skończyć.

Edit: Oczywiście możesz tak zrobić, ale używanie do tego zmiennych globalnych to raczej nie jest dobre rozwiązanie.
P-24125
pawelekster
Temat założony przez niniejszego użytkownika
» 2010-11-18 22:06:34
W tym wypadku musisz przekazać do funkcji wielkość tablicy, inaczej skąd funkcja ma wiedzieć kiedy skończyć.

Powyższy kod skompilowałem i zadziałał.
Wprowadzone są dwie zmienne globalne i, n , któte są "widziane" w kodzie procedury - trochę sztucznie, ale działa... Tak samo samą tablicę zdefiniowałem globalnie, ale to nie musi tak być.
Całość jest bardziej rekurencją, ale być może chodzi o "sztukę dla sztuki", aby akurat zdefiniować rekurencyjnie (wywołanie rekurencyjne)
P-24128
« 1 » 2
  Strona 1 z 2 Następna strona