Napisz rekurencyjną funkcję, która dla podanych k i n oblicza k-ty wyraz ciągu danego wzorem:
c0 = n
ck = (ck−1)/2 dla ck−1 parzystego *
ck = 3·(ck−1) +1 dla ck−1 nieparzystego. *
Napisz program, który wczytuje od użytkownika liczbę n i k, a następnie oblicza k-ty wyraz ciągu (ck) i go wyświetla.
*w tym ck-1 w nawiasie chodzi że to jest indeks dolny czyli np. wyraz o indeksie 5tym - 1
i teraz napisałem taki o to program:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("podaj ilosc wyrazow i pierwszy wyraz ciagu!\n");
int k, n;
scanf("%d%d",&k,&n);
int ciag(k,n);
}
int ciag ( ilosc_wyrazow,wyraz_pierwszy)
{
if (ilosc_wyrazow == 0 )
return wyraz_pierwszy;
if (ilosc_wyrazow%2 == 0)
{
return ciag(ilosc_wyrazow-1/2);
}
else
{
return ciag(3*ilosc_wyrazow+1);
}
}
Program nie wiem dlaczego ale zawsze po wpisaniu jakiejkolwiek liczby zwraca mi wartość 2. Proszę o pomoc gdyż to moje pierwsze starcie z rekurencją i chcę ją zrozumieć