Что нового

"Что такое рекурсия?" или "У разработчиков Googlа есть чувство юмора(?)"

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
На эту тему можно указывать новичкам которые спрашивают о рекурсий...



реально наберите в поиске Google слово рекурсия, и увидите тот же результат что и на картинке.

А вот демотиватор на эту тему:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
У попа была собака...

:smile:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Да давно известно, что у Google есть чувство юмора :D
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Нужен пример кода на AutoIt :whistle:
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Suppir [?]
Нужен пример кода на AutoIt

Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Global $iGUI_Width = 225, $iGUI_Height = 130
Global $iStep = 1, $iEdge = 10
Global $iLeft1 = $iGUI_Width - $iEdge, $iLeft2 = $iGUI_Width + $iEdge
Global $sText = "нужен пример кода на AutoIt чтобы понять что такое рекурсия, иначе не понять для чего"

$hGUI = GUICreate("Пример рекурсий", $iGUI_Width, $iGUI_Height)

GUICtrlCreateLabel("Рекурсия", 0, 0, $iGUI_Width, $iGUI_Height - 40, BitOR($SS_CENTERIMAGE, $SS_CENTER))
GUICtrlSetFont(-1, 14, 800)

GUICtrlCreateLabel("", 2, $iGUI_Height - 30, $iGUI_Width - 4, 2, $SS_SUNKEN)

$nLabel1 = GUICtrlCreateLabel($sText, $iLeft1, $iGUI_Height - 20)
$nLabel2 = GUICtrlCreateLabel($sText, $iLeft2, $iGUI_Height - 20)

GUICtrlSetColor($nLabel1, 0x0000FF)
GUICtrlSetColor($nLabel2, 0x0000FF)

GUISetState(@SW_SHOW, $hGUI)
AdlibRegister("_MoveLabels", 10)

While 1
	$Msg = GUIGetMsg()
	
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _MoveLabels()
	$iLeft1 -= $iStep
	
	If $iLeft1 <= -$iGUI_Width Then
		$iLeft2 -= $iStep
		ControlMove($hGUI, "", $nLabel2, $iLeft2, $iGUI_Height - 20)
	EndIf
	
	If $iLeft2 <= -$iGUI_Width Then
		ControlMove($hGUI, "", $nLabel1, $iLeft2, $iGUI_Height - 20)
		
		$iLeft1 = $iLeft2
		$iLeft2 = $iGUI_Width + $iEdge
	EndIf
	
	ControlMove($hGUI, "", $nLabel1, $iLeft1, $iGUI_Height - 20)
EndFunc


:laugh:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А разве рекурсия это не что-то вроде приведенной ниже конструкции, которая вызывает сама себя? Всегда думал что это именно оно и есть.
Код:
Test1()
Dim $i = 0
Func Test1()
	ToolTip($i,0,0)
	$i = $i + 1
	Test1()
EndFunc


А то что там, выше, это скорее цикл о_О
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Belfigor
Ты не уловил юмора в моём примере (или ты его просто не запускал), жаль.

P.S
Да, рекурсия это нечто что само себя повторяет.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Где-то читал такое(далее по памяти):
Представьте, что вы очнулись в общественном туалете на полу абсолютно голый, в руке у вас 100 рублей. Что вы будете делать?

И был один ответ - сделать рекурсию: подстеречь человека, оглушить его, раздеть, самому одеться в его одежду и сунуть в руку купюру. :D
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Вот очень простое объяснение:

функция А вызывает функцию Б
а в функции Б есть вызов функции А.
 

skype4com

Новичок
Сообщения
11
Репутация
1
Бесконечные рекурсии запрещены кодексом программиста :smile:, и карается жостким сексом с багами приводящему в итоге к ампутации верхних конечностей.

Правильная функция рекурсии всегда имеет вход и выход.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Suppir [?]
Вот очень простое объяснение
А вот ещё проще:

«Вызванная функция «A» запускает саму себя.»

P.S
Ребята, тема не заводилась для учебных целей, а просто для забавы.
 

Nik_rus

Python The Snake.
Сообщения
214
Репутация
62
Рекурсия такая рекурсия скажу я вам...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
ух сколько спецов по рекурсии ;D
а что никто так и не сходил по ссылке на вики? :blum:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Еще известный баян-рекурсия.
1. Админ всегда прав.
2. Если админ не прав см. п. 1
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
Medic84 сказал(а):
Еще известный баян-рекурсия.
1. Админ всегда прав.
2. Если админ не прав см. п. 1
Гыгыг =)) Это же написано у нас в правилах городского чата (Общие положения). Я сам лично писал (точнее спёр откуда-то) ;D
Гугль улыбнул, лишний раз разрушив стереотип тамашних до ужоса "суръёзных" программеров =))
 

shm_alex

Новичок
Сообщения
34
Репутация
4
Чтобы понять рекурсию надо понять рекурсию.
 

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Дежавю!

P.S. Где-то я уже все это читал.. :laugh:
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
А с помощью этой рекурсии можно проверить стабильность работы системы и погреть CPU, если других средств нет под рукой. Файл обязательно должен называться "Start.bat". Процесс остановить очень проблематично, для остановки нужна горячая перезагрузка
Код:
@echo off
:Start
Start Start.bat
goto Start
Результат - загрузка ЦП около 100%, большой своп, сильные тормоза. Система должна работать медленно и без сбоев.
 

SyDr

Сидра
Сообщения
651
Репутация
158
Есть ещё один "прикольный" способ получить рекурсию. Пошагово:
1) Переименуйте каталог с AutoIt в AutoIt3.chm
2) Откройте файл AutoIt3.chm, находящийся в этом каталоге.
3) Помедитируйте на открывшиеся возможности.
4) Если нажмёте Сохранить или Отмена, переходите к пункту 5), если нажали Открыть, то переходите к пункту 3.
5) Конец примера. Не забудьте переименовать каталог обратно.
 
Верх