Mam takie polecenie:
Użytkownik podaje liczbę całkowitą n>0.
Program:
alokuje dwie tablice liczb typu int rozmiaru n+1
używając jedynie tych tablic i pewnej niewielkiej liczby zmiennych zaalokowanych statycznie program oblicza rekurencyjnie n-ty wiersz trójkąta Pascala ( wszystkie symbole dwumianowe z górnym parametrem równym n)
wypisuje obliczone wartości
zwalnia pamięć
Napisałem to, ale iteracyjnie i nie wiem jak to zmienić na rekurencję
#include <stdio.h>
#include <stdlib.h>
/*
int triangle(int n, int i)
{
if(i==0||i== n) return 1;
else return triangle(n-1, i-1) + triangle(n-1, i);
}
*/
int main()
{
int n,i,k;
int * array_1;
int * array_2;
scanf("%d",&n);
if(n=='0') printf("%d", 1);
if(n=='1') printf("%d %d", 1, 1);
array_1 = (int*)calloc(n+1,sizeof(int));
array_2 = (int*)calloc(n+1,sizeof(int));
array_1[0] = 1;
array_1[1] = 1;
k=1;
while(k!=n)
{
for(i=0; i<=k+1; i++)
{
if(i==0)
{
array_2[0] = 1;
}
else if(i==n)
{
array_2[i] = 1;
}
else
{
array_2[i] = array_1[i] + array_1[i-1];
}
}
for(i=0; i<=n; i++)
{
array_1[i] = array_2[i];
array_2[i] = 0;
}
k++;
}
for(i=0; i<=n; i++)
{
printf("%d ", array_1[i]);
}
/*for(i=0; i<=n; i++)
{
printf("%d\t", triangle(n, i));
}
*/
free(array_1);
free(array_2);
return 0;
}