Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kami Boleh Mencetak Nombor Secara Berurutan Tanpa Gelung atau Pernyataan Bersyarat?

Bagaimanakah Kami Boleh Mencetak Nombor Secara Berurutan Tanpa Gelung atau Pernyataan Bersyarat?

Linda Hamilton
Lepaskan: 2024-11-27 03:33:14
asal
592 orang telah melayarinya

How Can We Print Numbers Sequentially Without Loops or Conditional Statements?

Mencetak Nombor Tanpa Gelung atau Syarat

Dalam pengaturcaraan, selalunya perlu mencetak atau memaparkan urutan nombor. Pendekatan biasa ialah menggunakan gelung atau pernyataan bersyarat untuk melelaran melalui julat yang dikehendaki. Walau bagaimanapun, adalah mungkin untuk mencetak satu siri nombor tanpa bergantung pada binaan ini.

Mencetak dari 1 hingga 1000 dalam C atau C

Untuk tugas mencetak nombor dari 1 hingga 1000, satu penyelesaian yang mungkin melibatkan fungsi rekursif:

#include <stdio.h>

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

Fungsi ini memanggil sendiri secara rekursif, menambah parameter j sehingga mencapai nilai 1000. Untuk mengelakkan ralat penuding, alamat operator & digunakan sebelum penuding fungsi.

Versi C Standard

Versi C yang lebih standard bagi fungsi di atas adalah 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

Versi ini menggunakan tatasusunan penuding fungsi statik untuk mencapai kesan yang sama.

Kesimpulan

Walaupun kaedah ini mungkin bukan penyelesaian yang paling cekap atau elegan, ia menunjukkan kemungkinan mencetak urutan nombor tanpa menggunakan gelung atau bersyarat.

Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mencetak Nombor Secara Berurutan Tanpa 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan