Другие языки программирования и технологии

Найти число Фибоначчи, ближайшее к заданному натуральному числу N. (программирование в языке Си)

(программирование в языке Си)
#include <math.h>
#include <stdio.h>
#include <conio.h>
int main() {
    int n, prev = 0, current = 1, fib = 0, min, x = 0;
    printf("n?.. ");
    scanf_s("%i", &n);
    min = n;
    do {
        fib = prev + current;
        if (abs(n - fib) < min) {
            min = abs(n - fib);
            x = fib;
        }
        current = prev;
        prev = fib;
    } while (fib < n);
    printf("min = %i\n", x);
    _getch();
    return 0;
}
Жека Вдовин
Жека Вдовин
73 618
Лучший ответ
Сия функция по идее должна найти число меньше заданного:

int fibo(int n)
{
int a=1;
int b=1;
int c=2;
while (c < n)
{
c=a+b;
a:=b;
b:=c;
}
return c-a;
}

Может где напутал чуток - 100 лет на С не писал - но совсем малость.
Ну а дальше все как бы тривиально...
#include <stdio.h>

int main() {
    int a = 0, b = 1, n;
    printf("n? ");
    scanf("%d", &n);
    while (b < n) {
        b += a;
        a = b - a;
    }
    printf("result: %d", b - n > n - a? a : b);
    return 0;
}
Рекурсивные функции, дружочек!
Если они там есть..