Strona 1 z 1

[C++} Funkcje rekurencyjne

: 17 paź 2013, 14:18
autor: winuser
Mam takie zadanie:
Napisz funkcje:
wyznaczania n-tego wyrazu ciągu Fibonacciego (wersję rekurencyjną).
wyznaczania n-tego wyrazu silni
wyznaczania potęgi o wykładniku naturlanym liczby rzeczywistej
Napisz program wyznaczający wszystkie liczby Fibonacciego z przedziału 1..n, gdzie n - liczba dodatnia.
Obliczjający n!
wyznaczjący potęgę o wykładniku naturlanym liczby rzeczywistej
w zależności od opcji wybranej przez użytkownika.
Nie potrafię zrobić obliczania potęgi :( Pomoże ktoś ?

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>
using namespace std;
int fib(int n) 
{
if (n<2) return (1);
else return fib(n-1) + fib(n-2);
}
int silnia(int n)
{
if (n==0) return (1);
else return (n*silnia(n-1));
}
float potega(float x, int y)
{
    if (x==0) return (1);
    else return x*potega (x,y);
}    
     
int main()
{ int wybor,n;
cout<<"Program oblicza Funkcje, wybierz jedna z opcji: \n"<<
"1. n-ty wyrazu ciagu Fibonacciego \n"
<< "2.  n-ty wyraz silni \n "
<<"3. wyznacza potege o wykładniku naturlanym liczby rzeczywistej"<<"\n";
cin>>wybor;
cout<<"Podaj liczbe:"<<"\n";
cin>>n;
    cin.get();
   switch (wybor)
   {
         case 1:cout<<"Fibonacci to:"<<fib(n);break;
         case 2:cout<<"Silnia to:"<<silnia(n);break;
         case 3:cout<<"Potega to:"<<potega(n;break;
           default: cout << "nie ma takiej opcji"; break;
           }
    cin.get();
    return 0;
}

Re: [C++} Funkcje rekurencyjne

: 17 paź 2013, 15:46
autor: Ult1me
float potega(float x, int y)
{
if (x==0) return (1);
else return x*potega (x,y);
}

a czasem nie *potega(x,y-1) wtedy już? nie masz pętli.

PS. Jest masa przykładów na necie dot. tego, idziesz na łatwiznę... ciekawe co będzie przy konstruktorach obiektu :suchy:

Re: [C++} Funkcje rekurencyjne

: 17 paź 2013, 16:35
autor: winuser
Podołałem, wystarczyło nad tym jeszcze z godzinę posiedzieć i ogarnąć :) Wstawiam dla potomności ;)

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>

using namespace std;

int fibonacci(int n)
{
if (n<2)
return 1;
else
return fibonacci(n-1)+fibonacci(n-2);
}

long int Silnia (int n)
{
if (n == 0)
return ( 1);
else return (n*Silnia(n-1));
}

float potega(float x, int n)
{
float wynik = 1;
for (int i=0; i<n; i++)
wynik = wynik*x;
return wynik;
}

int main()
{
int wybor;

int a;

int b;

float x;

int n;

cout <<"Wybierz 1,2,3,4 lub 5:\n"
<< "1. wyznaczajacy wszystkie liczby Fibonacciego z przedzialu 1..n, gdzie n - liczba dodatnia.\n"
<< "2. Obliczjajacy n!\n"
<< "3.wyznaczjacy potege o wykladniku naturlanym liczby rzeczywistej\n"
<< "4. Wyjscie\n";
cin >> wybor;
cin.get();
while (wybor !=4)
{
switch (wybor)
{
case 1: 
{cout<<"Podaj wartosc parametru"<<endl;
cout<<""<<endl;
cin>>a;
cin.get();
cout<<"Wynik= "<<fibonacci(a)<<endl;;
} 
break;
case 2: 
{
cout<<"Podaj wartosc parametru"<<endl;
cout<<""<<endl;
cin>>b;
cin.get();
cout<<"Wynik= "<<Silnia(b)<<endl;
} 
break;
case 3: 
{
cout<<"Podaj wartosc podstawy"<<endl;
cout<<""<<endl;
cin>>x;
cout<<"Podaj wartosc wykladnika"<<endl;
cout<<""<<endl;
cin>>n;

cin.get();
cout<<"Wynik= "<<potega(x,n)<<endl;
} 
break;
case 4: 
{
cout<<"Opcja jest nieprawidlowa\n";
} 
break;
default: cout<< "Nie ma takiej opcji\n";
}
cout<<""<<endl;
cout <<"Wybierz 1,2,3,4 lub 5:\n"
<< "1. wyznaczajacy wszystkie liczby Fibonacciego z przedzialu 1..n, gdzie n - liczba dodatnia.\n"
<< "2. Obliczjajacy n!\n"
<< "3.wyznaczjacy potege o wykladniku naturlanym liczby rzeczywistej\n"
<< "4. Wyjscie\n";
cin >> wybor;
cin.get();
}
return 0;
}

Re: [C++} Funkcje rekurencyjne

: 17 paź 2013, 19:35
autor: Ult1me
Tylko wiesz, w takim przypadku ta potęga nie jest rekurencyjna, bo żeby się obliczyć nie wywołuje samej siebie...

Re: [C++} Funkcje rekurencyjne

: 19 paź 2013, 14:49
autor: winuser
Wiem, jak pytałem nauczycielki, powiedziała, że dobrze :)

Re: [C++} Funkcje rekurencyjne

: 19 paź 2013, 16:05
autor: lolasher
To ja bym nie słuchał takiej nauczycielki tylko sam się uczył, żeby pisać prawidłowo.

Re: [C++} Funkcje rekurencyjne

: 19 paź 2013, 20:23
autor: urban92
Popieram... Jeszcze nie poznałem takiej baby która by była w stanie dobrze ogarniać IT a co dopiero uczyć...

Re: [C++} Funkcje rekurencyjne

: 19 paź 2013, 20:49
autor: PisarzKsiazkowicz
Ja bym się cieszył, że nie każe drukować kodów źródłowych do zeszytu. :D

Re: [C++} Funkcje rekurencyjne

: 20 paź 2013, 0:40
autor: bsystem
urban92 pisze:Popieram... Jeszcze nie poznałem takiej baby która by była w stanie dobrze ogarniać IT a co dopiero uczyć...
Mam nauczycielkę od programowania, która ma inżyniera, robi doktorat + ma męża inżyniera. Szczerze mu zazdroszczę znaleziska, bo kobieta genialna, ogarnia, a do tego można na luzie pogadać.

Więc skończ z tymi stereotypami.

Re: [C++} Funkcje rekurencyjne

: 20 paź 2013, 1:48
autor: PisarzKsiazkowicz
bsystem pisze:
urban92 pisze:Popieram... Jeszcze nie poznałem takiej baby która by była w stanie dobrze ogarniać IT a co dopiero uczyć...
Mam nauczycielkę od programowania, która ma inżyniera, robi doktorat + ma męża inżyniera. Szczerze mu zazdroszczę znaleziska, bo kobieta genialna, ogarnia, a do tego można na luzie pogadać.

Więc skończ z tymi stereotypami.
Daj mu narzekać, bo go żadna ogarniająca dziewczyna nie chce znać. :trollface: Bo to myślenie raczej z tego się bierze.

Re: [C++} Funkcje rekurencyjne

: 20 paź 2013, 18:53
autor: urban92
Tak już poważniej mówiąc to znam kilka kobiet z bardzo ścisłymi umysłami które zajmują się "czystą" informatyką, czyli masa matematyki, algorytmika i programowanie i fakt, świetnie da się z nimi rozmawiać itd. itp, ale nie znam jeszcze żadnej z mojej specjalizacji, czyli takiej która lubi się pobrudzić cyną i kurzem :D

W ogóle widział ktoś kobietę z lutownicą w dłoni która nie została zmuszona do trzymania tej lutownicy pod groźbą trzepnięcia patelnią? (pozdro dla Tomartina i rudej.).

Re: [C++} Funkcje rekurencyjne

: 20 paź 2013, 19:13
autor: bsystem
urban92 pisze:W ogóle widział ktoś kobietę z lutownicą w dłoni która nie została zmuszona do trzymania tej lutownicy pod groźbą trzepnięcia patelnią? (pozdro dla Tomartina i rudej.).


Tak, Jodowana Kaczornica vel Asia, skojarzysz, jeśli pamiętasz akcje z rymowaniem w shoutboksie ;P Urban, po prostu wyjdź z domu i zacznij szukać, a nie narzekasz ;_;

Re: [C++} Funkcje rekurencyjne

: 20 paź 2013, 19:15
autor: urban92
A to nie jest facet? lol?

Re: [C++} Funkcje rekurencyjne

: 21 paź 2013, 5:31
autor: winuser
lolasher pisze:To ja bym nie słuchał takiej nauczycielki tylko sam się uczył, żeby pisać prawidłowo.
Jak jej nie będę słuchał, to jeden dostanę i pogadane :)
@urban92
ona nie do końca ogarnia, robi błędy w swoich programach, my na lekcji się dziwimy, że nie działa ;)