|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2013
Messaggi: 2
|
[C] Funzione calcolo frazione continua
Ciao, cerco qualcuno che possa darmi una mano a capire dove ho sbagliato: si tratta di una funzione ricorsiva che implementa un algoritmo per il calcolo della frazione continua. Il risultato che mi da l'output è errato di poco, non riesco proprio a capire dov'è l'errore.
Codice:
#include <stdio.h>
float CalcFrazCont (int n, int arr[], float sum)
{
int i;
while (i <= n)
{
i++;
sum = sum + (1 / CalcFrazCont (i, arr[i], sum));
}
return sum;
}
int main (void)
{
int i, n;
int arr[100];
float sum;
printf ("Inserisci n: ");
scanf ("%i", &n);
printf ("Inserisci %i valori: \n", n);
for (i = 1 ; i <= n ; i++)
{
printf ("%i° valore= ", i);
scanf ("%i", &arr[i]);
}
sum = arr[1];
printf ("La frazione continua è: %f", CalcFrazCont(n, arr, sum));
return 0;
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Guarda davvero non ho visto il codice ma ad un primo sguardo la variabile "i" in
Codice:
float CalcFrazCont (int n, int arr[], float sum)
{
int i;
while (i <= n)
{
i++;
sum = sum + (1 / CalcFrazCont (i, arr[i], sum));
}
return sum;
}
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2013
Messaggi: 2
|
Grazie per la risposta, hai perfettamente ragione, mi sono confuso con le variabili globali, che da quanto so vengono inzializzate automaticamente a 0 dal compilatore se lasciate non inizializzate all'interno del programma.
Il problema ora è che ponendo i = 0 mi da "segmentation fault" giusto prima del risultato |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Il passaggio dei parametri nella chiamata ricorsiva è sbagliato
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Jul 2012
Messaggi: 91
|
Quote:
Codice:
sum = sum + (1 / CalcFrazCont (i, arr[i], sum)); |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:13.




















