재귀 ㅡㅡ 헷갈리뉑.. 기록해놔야지.
부모 - 자식(부) -- 자식(자식) --- 자식
위처럼 (부모 - 자식) 단위로 반복되는 트리구조형태일때
그 깊이를 알수 없으나 한번에 적용하고자 할때 재귀 호추를 이용해서 작업을 해왔음.
주의 : 반듯이 재귀호출은 탈출구가 필요함. ..
--> 어차피 스택오버플로 예외가 발생할것임으로... 안되면 말자!
응용 예로는...
파일 목록 읽어드리는 탐색기? , XML에서 구조파악 후 깊은곳에서 뭔가 꺼내와야 하는 탐색할때나???
가끔 만들어보는데 만들때마다 헷갈릴때가 있어서 기록해둠. ...
효심 깊은 자식들을 만들어볼까나...
{
체크( 부 , 자 )
}
---------------------------
체크 ( 부 , 자 )
{
if( 자.자식들있나? )
foreach( 자식 in 자.자식들 )
체크 ( 자, 자식 )
else
자.일(for 부모 );
}
private void ucCompany_Body_Load(object sender, EventArgs e)
{
foreach (TabPage tp in tabControl1.TabPages)
{
foreach (Control ctrl in tp.Controls)
{
fnTextBox_Next(tp, ctrl); // 최초 함수 호출을 함.
}
}
}
/// <summary>
/// 나중에 이건 -> BaseUserCtrl 같은걸로 만들어서 빼야됨.
/// </summary>
/// <param name="pr"></param>
/// <param name="tx"></param>
private void fnTextBox_Next(Control pr, Control tx)
{
if (tx.HasChildren)
{
foreach (Control _pr in tx.Controls)
{
fnTextBox_Next(tx, _pr); // 함수내에서 다시 자기자신을 부르게 되는 재귀호출
}
}
else
{
if (tx is TextBox) Control_AddIn_Function.TextBox_NextFocus(tx);
//재귀호출에 탈출구가 됨.
}
}
위 소스는 재귀에 사용하던 코드중 하나임.
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
대리자에 대한 색다른 접근? (0) | 2009.08.06 |
---|---|
Textbox에 숫자만... 또는 숫자를 제외하고... (0) | 2009.06.05 |
코드 조각 내맘 데로 바꾸기... (0) | 2009.06.03 |
Form 사이즈 변경 못하게 막기 (0) | 2009.05.14 |
MDI 창에서 스크롤바~ (0) | 2009.05.14 |