Rumah > pembangunan bahagian belakang > C++ > Bagaimana Anda Boleh Mencetak Nombor 1 hingga 1000 Tanpa Menggunakan Gelung atau Pernyataan Bersyarat?

Bagaimana Anda Boleh Mencetak Nombor 1 hingga 1000 Tanpa Menggunakan Gelung atau Pernyataan Bersyarat?

DDD
Lepaskan: 2024-11-29 16:30:11
asal
944 orang telah melayarinya

How Can You Print Numbers 1 to 1000 Without Using Loops or Conditional Statements?

Mencetak 1 hingga 1000: Melangkaui Gelung dan Syarat

Dalam bidang pengaturcaraan, kami sering bergantung pada gelung dan pernyataan bersyarat untuk berulang melalui elemen. Tetapi bagaimana jika kita mencari pendekatan yang unik, yang menentang kebijaksanaan konvensional gelung dan bersyarat? Artikel ini membentangkan teknik yang membingungkan untuk mencetak nombor dari 1 hingga 1000 tanpa menggunakan binaan ini.

Penyelesaian itu memanfaatkan interaksi pintar rekursi fungsi dan aritmetik penunjuk. Pertimbangkan kod berikut dalam C:

#include <stdio.h>
#include <stdlib.h>

void main(int j) {
  printf("%d\n", j);
  (&&main + (&&exit - &amp;main)*(j/1000))(j+1);
}
Salin selepas log masuk

Pada mulanya, ia mungkin kelihatan seperti kita cuba mengira alamat, tetapi keajaiban sebenar terletak pada penuding fungsi dan aritmetik penuding. Coretan pada dasarnya mencipta mekanisme panggilan fungsi rekursif, di mana fungsi seterusnya yang akan dipanggil ditentukan oleh aritmetik penuding berdasarkan nilai j.

Apabila j mencapai 1000, aritmetik penuding menilai kepada (&&keluar - & utama)*1000, yang secara berkesan menunjuk ke fungsi keluar. Keluar panggilan menamatkan program, menamatkan panggilan rekursif dan mencetak urutan yang diingini dari 1 hingga 1000.

Untuk memastikan keserasian dengan standard C, kod boleh diubah suai seperti berikut:

#include <stdio.h>
#include <stdlib.h>

void f(int j)
{
    static void (*const ft[2])(int) = { f, exit };

    printf("%d\n", j);
    ft[j/1000](j + 1);
}

int main(int argc, char *argv[])
{
    f(1);
}
Salin selepas log masuk

Penyelesaian ini menunjukkan kuasa rekursi dan aritmetik penunjuk, menyediakan kaedah yang elegan dan tidak konvensional untuk mencetak nombor tanpa bergantung pada gelung atau bersyarat. Ia berfungsi sebagai peringatan yang menarik bahawa pemikiran kreatif boleh membawa kepada penyelesaian yang inovatif dalam dunia pengaturcaraan.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Mencetak Nombor 1 hingga 1000 Tanpa Menggunakan Gelung atau Pernyataan Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan