구구단 프로그램의 경우 개발을 처음 접할 시 한번쯤 과제로 만들기도 하는데 반복문을 이해하지 못할 경우 프로그램을 정상적으로 만들 수 가 없다.
반복문은 특정 조건까지 실행하도록 설계를 해야하는데 해당 설계가 잘못될 경우 오류가 발생하고 심각한 경우 무한루프에 빠지게 되어 설계된 프로그램이 멈추지 않고 계속 실행되어 페이지가 다운되는 경우도 발생된다.
아래 프로그램은 많이 사용하는 반복문을 활용하여 만든 구구든 프로그램으로 PHP에 대한 포스팅이기때문에 노출되는 부분에 대한 가독성은 고려하지 않았으며 복잡한 프로그램 또한 프로그램을 이해하는데 전혀 도움이 되지 않기때문에 최대한 배제하고 만들었으니 참고바란다.
<?php
for($i=2;$i<=9;$i++){
echo '<hr /><h3>'.$i.'단</h3>';
for($si=1;$si<=9;$si++){ echo ($si > 1 ? '<br>':'').$i.' × '.$si.' = '.($i*$si);}
}
<?php
$i = 2;
while($i <= 9){
$si = 1;
echo '<hr /><h3>'.$i.'단</h3>';
while($si <=9){ echo ($si > 1 ? '<br>':'').$i.' × '.$si.' = '.($i*$si); $si++; }
$i++;
}
<?php
foreach(range(2,9) as $i){
echo '<hr /><h3>'.$i.'단</h3>';
foreach(range(1,9) as $si){
echo ($si > 1 ? '<br>':'').$i.' × '.$si.' = '.($i*$si);
}
}
솔직히 말해서 재귀함수는 퍼포먼스로 본다면 가장 안좋은 방식이기도 하다. 구구단 프로그램은 출력위주이기때문에 함수로 작성하지 않고 노출하는게 이번 포스팅의 목표이지만 함수를 배제한다 하더라도 재귀함수 자체는 구구단 프로그램에서 사용하는건 맞지 않다.
재귀함수를 이용하는 목적은 반복 실행이 목적이긴 하나 반복이 되더라도 반복이 끝나는 시점이 실행횟수가 아닌 다른 조건이 있을 시 사용하는게 일반적이니 이부분도 참고 바라며 아래는 재귀함수로 만든 구구단 프로그램이긴 하나 구구단 같은 간다한 프로그램 짤때는 되도록 사용하지 않는게 좋다.
<?php
function gugudan($i = 2,$si = 1){
if($i > 9){ return true; }
if( $si > 9){ $i++; $si = 1; }
if($si == 1) { echo '<hr /><h3>'.$i.'단</h3>'; }
echo ($si > 1 ? '<br>':'').$i.' × '.$si.' = '.($i*$si);
$si ++;
return gugudan($i, $si);
}
gugudan();