สร้างสามเหลี่ยมจากอาร์เรย์โดยการลดจำนวนสมาชิกทีละหนึ่ง ระดับใหม่จะมีค่าเป็นผลรวมของค่าที่อยู่ติดกันในระดับก่อนหน้า ทำซ้ำจนเหลือเพียงค่าเดียว
ตัวอย่าง
Array: [3, 5, 7, 8, 9]
Output:
[106] [47, 59] [20, 27, 32] [8, 12, 15, 17] [3, 5, 7, 8, 9]
อธิบาย
- ระดับ 1: 3+5=8, 5+7=12, 7+8=15, 8+9=17
- ระดับ 2: 8+12=20, 12+15=27, 15+17=32
- ระดับ 3: 20+27=47, 27+32=59
- ระดับ 4: 47+59=106
โค้ดตัวอย่าง (Recursive)
#include <stdio.h>
void printTriangle(int arr[], int n) {
if (n < 1) return;
int temp[n - 1];
for (int i = 0; i < n - 1; i++) {
temp[i] = arr[i] + arr[i + 1];
}
printTriangle(temp, n - 1);
for (int i = 0; i < n; i++) {
printf("%d%s", arr[i], (i == n - 1) ? " " : ", ");
}
printf("\n");
}
int main() {
int arr[] = {3, 5, 7, 8, 9};
int n = sizeof(arr) / sizeof(arr[0]);
printTriangle(arr, n);
return 0;
}
ผลลัพธ์
106 47, 59 20, 27, 32 8, 12, 15, 17 3, 5, 7, 8, 9