Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/11/2014, 14:00
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Suma de terminos serie de Fibonacci-C

La condición de salida deja de cumplirse cuando al último valor inferior al threshold le sumas el siguiente valor. Siempre saldrá cuando sum sea mayor o igual que threshold. Si quieres que de de el último valor inferior a threshold, tendrás que hacer una comprobación adicional dentro del bucle:

Código C:
Ver original
  1. while (sum < threshold) {
  2.     previous = current;
  3.     current = next;
  4.     next = previous + current;
  5.     printf(" + %d", current) ;
  6.     if ((sum+current) > threshold)
  7.       break;
  8.     else
  9.       sum += current;
  10.   }

y, en este caso, dado que ya tienes la condición de salida dentro del bucle, no necesitarías ponerla en el while:

Código C:
Ver original
  1. while (1) {
  2.     previous = current;
  3.     current = next;
  4.     next = previous + current;
  5.     printf(" + %d", current) ;
  6.     if ((sum+current) > threshold)
  7.       break;
  8.     else
  9.       sum += current;
  10.   }

Por cierto, que con números enteros de 32 bits podrás llegar hasta el término 43 o 44, a partir de ahí empezarás a obtener resultados raros por desbordamiento de enteros.