ปัญหา: แทนที่หลักศูนย์ (0) ทุกหลักในจำนวนเต็มให้กลายเป็น 1
เช่น 102410 → 112411
อัลกอริทึมแบบ Recursive
- ฟังก์ชัน
replace(number): ถ้า number == 0 คืน 0 - 取หลักสุดท้าย
digit = number % 10 - ถ้า digit == 0 ตั้ง digit = 1
- คืน
replace(number/10) * 10 + digit - ฟังก์ชัน
Convert(number): ถ้า number == 0 คืน 1 (กรณีเลข 0 เดียว) ไม่งั้นเรียก replace()
โค้ด C
#include <stdio.h>
int replace(long int number) {
if (number == 0)
return 0;
int digit = number % 10;
if (digit == 0)
digit = 1;
return replace(number / 10) * 10 + digit;
}
int Convert(long int number) {
if (number == 0)
return 1;
else
return replace(number);
}
int main() {
long int number;
printf("\nEnter any number : ");
scanf("%ld", &number);
printf("\nAfter replacement the number is : %ld\n", Convert(number));
return 0;
}
ตัวอย่าง Output
Enter any number: 1056110010
After replacement the number is: 1156111111