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 originalwhile (sum < threshold) {
previous = current;
current = next;
next = previous + current;
if ((sum+current) > threshold)
break;
else
sum += current;
}
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 originalwhile (1) {
previous = current;
current = next;
next = previous + current;
if ((sum+current) > threshold)
break;
else
sum += current;
}
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.