© Данная статья была опубликована в № 20/2007 журнала "Информатика" издательского дома "Первое сентября". Все права принадлежат автору и издателю и охраняются.      Главная страница "Первого сентября"
     Главная страница журнала "Информатика"
     Содержание № 20/2007
 В мир информатики # 96 (16-31 октября). Гармонические числа


В мир информатики # 96 (16–31 октября).
Семинар

Гармонические числа

Сумма при целом n 1 так часто встречается в анализе алгоритмов6, что специалистам понадобилось для нее специальное обозначение — Нn. Буква Н в этом обозначении происходит от слова “harmonic”, так что Нn — это гармоническое число. Оно названо так потому, что k-я гармоника, извлекаемая из скрипичной струны, — это основной тон, производимый струной, длина которой равна 1/k от длины основной струны [1].

Рассчитать значение Нn при заданном n можно с помощью функции, которая на школьном алгоритмическом языке имеет вид:

алг вещ Гармоническое_число(арг цел n)

нач цел i, вещ сумма

сумма := 1

нц для i от 2 до n

сумма := сумма + 1/i

кц

| Значение функции:

знач := сумма

кон

Учитывая, что , можно применить прием, который в программировании называют “рекурсией” [2]. Создадим простую и логичную рекурсивную (использующую саму себя в качестве вспомогательной) функцию:

алг вещ Гармоническое_число(арг цел n)

нач

если n = 1

то

знач := 1

иначе

знач := Гармоническое_число(n — 1) + 1/n

все

кон

Нетрудно увидеть, что обе приведенные функции возвращают вещественное значение гармонических чисел.

Несколько более сложной задачей является получение гармонических чисел в виде простой дроби: 3/2, 11/6 и т.п.

Задание для самостоятельной работы

На известном вам языке программирования разработайте программы для получения гармонических чисел в двух вариантах вывода их на экран:

Во втором случае две функции не создавать. Программы, пожалуйста, присылайте в редакцию. Фамилии всех приславших правильные программы будут опубликованы, а лучшие ответы мы поощрим.

Литература

1. Грэхем Р., Кнут Д., Паташник О. Конкретная математика. М.: Мир, 1998.

2. Рекурсия. / “В мир информатики” № 5 (“Информатика” № 37/2003).


6 В будущем мы приведем несколько интересных примеров использования этой суммы.