Pomoc z rekurencyjnym wyświetleniem wyniku

0

Cześć,
Mam taki problem. Napisałem rekurencyjny program liczący silnię z danej liczby. Wszystko działa w porządku, jednak gdy chcę zadeklarować funkcję void wyświetl program zaczyna wariować. Oto co skleiłem.

include <iostream>

using namespace std;


    long long silnia (int x)
        {
            if (x<2)
                return 1;
                    else
                        return x*silnia(x-1);
        }
        

    void wynik(int w)
    {
        cout<<w;
    }

int main()
{
    int a;
    float w;
        cout<<"Podaj liczbe"<<endl;
        cin>>a;
        wynik(a);
    return 0;
}
 

Tak wygląda mój program. Gdy normalnie podam cout<<wynik(a); wszystko jest okej.

0

program zaczyna wariować

Co przez to rozumiesz?

PS: fatalne formatowanie. Nawet przy tak krótkim programie już nieprzyjemnie się to czyta.

0
jednak gdy chcę zadeklarować funkcję void wyświetl program zaczyna wariować.

to znaczy ze deklarujesz (a raczej definiujesz) ja zle

0

ajć, w tym konkretniym programie wyświetla się zmienna a, którą podaje się z klawiatury, bez jakich kolwiek obliczeń. Wcześniej wyświetlało mi wynik z e - jakąś b. dużą liczbę. Tak wiem, muszę popracować nad formatowaniem.

Edycja: chyba mnie oświeciło... Zrobilem

 void wynik(int x)
    {
        cout<<silnia(x);
    }

i działa :)

2

W programie, który przedstawiłeś nigdzie nie wywołujesz funkcji silnia.

2

Ja też trochę nie wiem o co chodzi. Masz funkcję prezentującą wynik więc przekaż do niej wartość silni i wyświetl na ekranie:

#include <iostream>
using namespace std;

long long silnia (int x) {
	return x < 2 ? 1 : x*silnia(x-1);
}

void pokaz(long long wartosc){
	cout << wartosc;
}

int main() {
	pokaz(silnia(5));
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1