Тег «рекурсия»

Игра “Сапёр” на Паскале

Игра "Сапер" всем известна. Некоторые студенты делают реализацию алгоритма этой игры в качестве курсовой работы. Для таких студентов, я думаю, пригодится эта функция, которая открывает ячейки. Функция рекурсивная.

procedure matrix.OpenCells(i,j:integer);
var t:integer;
begin
t := 0;
if (i < 1) or (j < 1) then t := 1;
if (i = n+1) or (j = n+1) then t := 1;
if t [...]

Ваш отзыв

Вычисление определителя 4 порядка на C++

Для вычисления определителя матрицы четвертого порядка воспользуемся рекурсией. Алгоритм решения такой:
|a11 a12 a13 a14|
|a21 a22 a23 a24|
|a31 a32 a33 a34|
|a41 a42 a43 a44|
= (-1)^(1+1) * a11 * |a22 a23 a24| +
|a32 a33 a34|
|a42 a43 a44|
+ (-1)^(1+2) * a12 * |a21 a23 a24| +
|a31 a33 a34|
|a41 a43 a44|
+ (-1)^(1+3) * a13 * |a21 a22 a24| +
|a31 [...]

Ваш отзыв

Косвенная рекурсия в Паскале

Про рекурсию я уже рассказывал на примере вычисления факториала. Но паскаль также поддерживает и так называемую косвенную рекурсию. Это когда некоторая функция вызывает другую функцию, которая в свою очередь вызывает первую функцию.

Program Primer_Kosvennoi_Rekursii;
Var
a : integer;
Procedure Recurs_2 (Var Y:integer); Forward;

Procedure Recurs_1 (Var X:integer);
Begin
X := X-1;
if X > 0
[...]

Отзывов (1)

Удаление каталога на C++

Рассмотрим пример полного удаление каталога при помощи рекурсивного обхода всех файлов и вложенных папок на языке C++.

#include "shellapi.h"
#pragma comment( lib, "shell32.lib" ) // добавить shell32.lib

// вариант для Unicode
int Remove_dirW(LPCWSTR pPath)
{
SHFILEOPSTRUCTW sh;
ZeroMemory(&sh,sizeof(SHFILEOPSTRUCTW));
sh.wFunc = FO_DELETE;
sh.pFrom = pPath; //удаляемая директория
//(путь в формате Unicode, завершающийся 2-мя NULL-терминаторами...)
sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
return SHFileOperationW(&sh);
}

// Для Ansi
int Remove_dirA(LPCTSTR pPath)
{
SHFILEOPSTRUCTA sh;
ZeroMemory(&sh,sizeof(SHFILEOPSTRUCTA));
sh.wFunc = FO_DELETE;
sh.pFrom [...]

Ваш отзыв

Рекурсия

Рекурсия позволяет делить проблему на части все меньшего и меньшего размера до тех пор, пока
они не станут настолько малы, что решение этих подзадач сведется к набору простых операций.
После того как вы поработаете с рекурсией, вы обнаружите, что она встречается достаточно часто. Многие программисты-новички иногда чрезмерно увлекаются рекурсией и начинают применять ее в ситуациях, где она [...]

Ваш отзыв