Saturday, June 17, 2006

เรียนวิชา Principle of Programming

เริ่มเรียน ตัวอย่างการใช้งานแบบ Recursion
ตัวอย่าง C
int fac(int i){
return (i==0)?return 1;return i * fac(i-1);
}

void main(){
printf("%d",fac(5));
//output 120
}

พิสูจน์จาก math
fac 5 = 5 * fac 4
= 5 * 4 * fac 3
= 5 * 4 * 3 * fac 2
= 5 * 4 * 3 * 2 * fac 1
= 5 * 4 * 3 * 2 * 1 * fac 0
= 5 * 4 * 3 * 2 * 1 * 1
= 120

หากต้องการเปลี่ยนจาก Recursive เป็น Loop จะใช้
int fac(int i){
int ans = 1;
if(i<0 data-blogger-escaped-br=""> return 1;
else
for(int n=1;n<=i;n++)
ans *= n;

return ans;
}