Пример «Числа Фибоначчи от ИИ Claude Sonnet 4 »
Файлы:
- Простые приложения
- Числа Фибоначчи от ИИ Claude Sonnet 4 .пфл
Пример программы на языке программирования Перфолента.Net:
//Эта программа написанна на языке программирования Перфолента.Net.
//Программа демонстрирует различные подходы к вычислению последовательности чисел Фибоначчи.
//Автор: Рогаткин Сергей Анатольевич, 2025
//Пример написан с помощью ИИ Claude Sonnet 4.
#ИспользоватьСтандартнуюБиблиотеку
ИмпортИмён Промкод.Перфолента.Консоль
Программа ЧислаФибоначчи
//---------------------------
Процедура Старт
Консоль.Заголовок = "Числа Фибоначчи - Перфолента.Net"
Консоль.ЦветТекста = ЦветаКонсоли.Белый
Консоль.ЦветФона = ЦветаКонсоли.ТемноСиний
Консоль.Очистить
Консоль.ВыводПС("Демонстрация алгоритмов чисел Фибоначчи")
Консоль.ВыводПС("=" + "=".Повторить(45))
Консоль.ВыводПС("")
// Тестируем разные подходы
n = 15
// 1. Итеративный подход (самый эффективный)
Консоль.ВыводПС("1. Итеративный подход:")
ВывестиПоследовательностьФибоначчи(n)
Консоль.ВыводПС("")
// 2. Рекурсивный подход (для небольших чисел)
Консоль.ВыводПС("2. Рекурсивный подход (первые 10 чисел):")
Для i = 0 По 9 Цикл
Консоль.ВыводПС(ФибоначчиРекурсивно(i))
КонецЦикла
Консоль.ВыводПС("")
Консоль.ВыводПС("")
// 3. Вычисление отдельных чисел
Консоль.ВыводПС("3. Отдельные числа Фибоначчи:")
Консоль.ВыводПС("F(20) = " + ФибоначчиИтеративно(20))
Консоль.ВыводПС("F(30) = " + ФибоначчиИтеративно(30))
Консоль.ВыводПС("F(40) = " + ФибоначчиИтеративно(40))
Консоль.ВыводПС("")
// 4. Использование массива
Консоль.ВыводПС("4. Массив чисел Фибоначчи:")
МассивФиб = ПолучитьМассивФибоначчи(12)
Для i = 0 По МассивФиб.ВГраница Цикл
Консоль.ВыводПС("F(" + i + ") = " + МассивФиб[i])
КонецЦикла
Консоль.ВыводПС("")
Консоль.ВыводПС("Нажмите любую клавишу для завершения...")
Пауза
КонецПроцедуры
//---------------------------
// Итеративный алгоритм для одного числа (наиболее эффективный)
Функция ФибоначчиИтеративно(n тип Целое) тип БольшоеЦелое
Если n <= 1 Тогда
Возврат n
КонецЕсли
Перем предыдущее тип БольшоеЦелое = 0
Перем текущее тип БольшоеЦелое = 1
Перем временное тип БольшоеЦелое
Для i = 2 По n Цикл
временное = предыдущее + текущее
предыдущее = текущее
текущее = временное
КонецЦикла
Возврат текущее
КонецФункции
//---------------------------
// Рекурсивный алгоритм (простой, но медленный для больших n)
Функция ФибоначчиРекурсивно(n тип Целое) тип БольшоеЦелое
Если n <= 1 Тогда
Возврат n
КонецЕсли
Возврат ФибоначчиРекурсивно(n - 1) + ФибоначчиРекурсивно(n - 2)
КонецФункции
//---------------------------
// Процедура для вывода последовательности чисел Фибоначчи
Процедура ВывестиПоследовательностьФибоначчи(количество тип Целое)
Если количество <= 0 Тогда
Консоль.ВыводПС("Количество должно быть больше 0")
Возврат
КонецЕсли
Перем предыдущее тип БольшоеЦелое = 0
Перем текущее тип БольшоеЦелое = 1
// Выводим первые два числа
Если количество >= 1 Тогда
Консоль.ВыводПС("0 ")
КонецЕсли
Если количество >= 2 Тогда
Консоль.ВыводПС("1 ")
КонецЕсли
// Вычисляем и выводим остальные числа
Для i = 2 По количество - 1 Цикл
Перем следующее тип БольшоеЦелое = предыдущее + текущее
Консоль.ВыводПС(следующее)
предыдущее = текущее
текущее = следующее
КонецЦикла
Консоль.ВыводПС("") // Переход на новую строку
КонецПроцедуры
//---------------------------
// Функция для получения массива чисел Фибоначчи
Функция ПолучитьМассивФибоначчи(количество тип Целое) тип БольшоеЦелое[]
Если количество <= 0 Тогда
Возврат Новый БольшоеЦелое[]
КонецЕсли
Перем фиб тип БольшоеЦелое[] = Новый БольшоеЦелое[количество-1]
Если количество >= 1 Тогда
фиб[0] = 0
КонецЕсли
Если количество >= 2 Тогда
фиб[1] = 1
КонецЕсли
Для i = 2 По количество - 1 Цикл
фиб[i] = фиб[i - 1] + фиб[i - 2]
КонецЦикла
Возврат фиб
КонецФункции
//---------------------------
// Функция проверки числа на принадлежность к последовательности Фибоначчи
Функция ЭтоЧислоФибоначчи(Чис тип БольшоеЦелое) тип Булево
Если Чис < 0 Тогда
Возврат Ложь
КонецЕсли
Если Чис = 0 или Чис = 1 Тогда
Возврат Истина
КонецЕсли
Перем предыдущее тип БольшоеЦелое = 0
Перем текущее тип БольшоеЦелое = 1
Пока текущее < Чис Цикл
Перем следующее тип БольшоеЦелое = предыдущее + текущее
предыдущее = текущее
текущее = следующее
КонецЦикла
Возврат текущее = Чис
КонецФункции
//---------------------------
// Функция поиска индекса числа Фибоначчи
Функция НайтиИндексФибоначчи(Чис тип БольшоеЦелое) тип Целое
Если Чис = 0 Тогда
Возврат 0
ИначеЕсли Чис = 1 Тогда
Возврат 1
ИначеЕсли Чис < 0 Тогда
Возврат -1 // Не найдено
КонецЕсли
Перем предыдущее тип БольшоеЦелое = 0
Перем текущее тип БольшоеЦелое = 1
Перем индекс тип Целое = 1
Пока текущее < Чис Цикл
Перем следующее тип БольшоеЦелое = предыдущее + текущее
предыдущее = текущее
текущее = следующее
индекс = индекс + 1
КонецЦикла
Если текущее = Чис Тогда
Возврат индекс
Иначе
Возврат -1 // Не найдено
КонецЕсли
КонецФункции
КонецПрограммы
К началу статьи
Вернуться в раздел:
Примеры по языку Перфолента.Net
Перейти в раздел:
Примеры