2015-11-13 3 views
-2

Я пытаюсь написать код, который вычисляет Фибоначчи с несколькими незначительными изменениями. есть ограничение на количество итераций, есть номер цели, и каждый i итерации число делится на 2.Фибоначчи с завихрением

как-то мой код не работает должным образом. он работает только для lim = 1 во всех остальных случаях он ничего не делает

может ли кто-нибудь увидеть ошибку?

int main() 
{ 
    int i, lim, gen_num, 
     fib1, fib2, next, count = 0, iterations = 0; 

    printf("Please enter the desired population\n"); 
    scanf("%d", &lim); 
    printf("Please enter the number of generations alowd\n"); 
    scanf("%d", &i); 
    printf("Please enter the number of generations between each disaster\n"); 
    scanf("%d", &gen_num); 
    fib1 = 0; 
    fib2 = 1; 
    while (fib2 < lim); 
    { 
     if (iterations <= i) 
     { 
      next = fib1 + fib2; 
      fib1 = fib2; 
      fib2 = next; 
      count += 1; 
      iterations += 1; 
      if (count%gen_num == 0) 
      { 
       fib2 /= 2; 
      } 
      printf("%d ", fib2); 
     } 
     else 
     { 
      printf("Number of iterations exceeded\n"); 
      return 0; 
     } 
    } 
    return 0; 
} 
+3

«* не работает должным образом *» не очень информативно. Если вам нужна помощь, опишите вашу точную проблему. –

+5

Цикл 'while' имеет точку с запятой в конце. – user3386109

ответ

1

Эта линия:

while (fib2 < lim); 

представляет собой бесконечный цикл, когда fib2 меньше lim. Точка с запятой в конце означает, что у вас есть пустое заявление, как тело цикла это эквивалентно:

while (fib < lim) { 
} 
Смежные вопросы