Fungsi Rekursif dalam C#

WBOY
WBOYasal
2024-09-03 15:14:33512semak imbas

Dalam Fungsi Rekursif dalam C#, Rekursi bermaksud untuk menandakan makna yang sama seperti dalam bahasa Inggeris, tepatnya dikenali sebagai mengulang sendiri. Jadi, sifat rekursif fungsi menandakan melakukan kerja yang sama berulang kali. Dan, ya jika program tidak dikendalikan dengan betul, ia pasti akan menjalankan program dalam gelung berterusan. Kita perlu memastikan kita menentukan syarat yang betul dalam melaksanakan fungsi rekursif ini, jika tidak fungsi itu akan memanggil dirinya sendiri, lagi dan lagi, yang membawa kepada pelaksanaan program yang berterusan. Di sini mari kita teruskan dan lihat bagaimana kita boleh mencipta fungsi ini dalam C#.

Sintaks fungsi rekursif dalam C#

Sintaks di sini adalah sama dengan sintaks fungsi asas dalam C#. Mari lihat di sini.

Fungsi Rekursif dalam C#

Tiada sintaks khas di sini, tetapi kita dapat melihat bahawa fungsi memanggil dirinya sendiri dalam memberikan hasil pulangan. Dan kita mesti berhati-hati dalam menghantar nilai parameter tersebut ke dalam fungsi rekursif itu kerana jelas sekali kita tidak mahu kod berjalan yang tidak berhenti.

Dalam sintaks di atas, tiada apa-apa seperti, kita perlu memanggil fungsi itu hanya dalam penyataan pulangan. Sebaliknya, kita juga boleh menetapkan nilai pulangan fungsi rekursif kepada pembolehubah dan mengembalikan pembolehubah itu juga.

Pelaksanaan Pemfaktoran

Di sini mari kita ambil pernyataan masalah lalai kami, Pemfaktoran, untuk menjana fungsi rekursif kami.

Kod:

using System;
class First {
static void Main() {
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
}
public static int fact(int num)
{
if(num==0)
{
return 1;
}
return num*fact(num-1);
}
}

Mari kita lihat proses langkah demi langkah.

  1. Pertama, kami telah mencipta fungsi berparameter kami sendiri untuk mengambil nilai input daripada fungsi utama, yang mana kami ingin mengira faktorial.
  2. Kemudian, kami membuat syarat if untuk menyemak sama ada nombor yang diberikan adalah sifar. Jika nombor itu sifar, maka kami mengembalikan 1 sebagai nilai lalai kami.
  3. Jika tidak, kami mendarabkan nombor sekarang dengan fungsi mengambil nombor tolak 1 sebagai parameternya.
  4. Jadi, pendaraban ini berulang sehingga kita sampai ke nombor 0. Secara lalai, kita telah menulis output pulangan kita untuk sifar sebagai 1, hasil akhir akan didarabkan dengan 1.

Output:

Fungsi Rekursif dalam C#

Sekarang, dalam kod, saya akan menggantikan parameter fungsi kami daripada num tolak 1 kepada, num.  Dalam kes ini, fungsi akan memanggil dirinya berulang kali dan proses akan berulang.

Kod:

using System;
class First {
static void Main() {
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
}
public static int fact(int num)
{
if(num==0)
{
return 1;
}
return num*fact(num);
}
}

Output:

Fungsi Rekursif dalam C#

Melalui output di atas, kita dapat melihat dengan jelas pengecualian limpahan tindanan, di mana fungsi itu berulang kali memanggil dirinya sendiri. Hanya bahagian yang diserlahkan diubah berkenaan dengan program pertama.

Dengan cara yang sama, kita boleh menjadikan nombor sebagai nilai yang dimasukkan pengguna seperti di bawah:

Kod:

using System;
class First {
static void Main() {
int result,c;
string a;
Console.Write("Enter value for number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
result = fact(c);
Console.WriteLine("Factorial is : " + result);
}
public static int fact(int num)
{
if(num==0)
{
return 1;
}
return num*fact(num-1);
}
}

Output:

Fungsi Rekursif dalam C#

Bagaimana jika kita memberikan sifar sebagai input? Ya, satu akan dikembalikan.

Output:

Fungsi Rekursif dalam C#

Sekarang, bagaimana jika kita memberikan nombor negatif?

Output:

Fungsi Rekursif dalam C#

Ini memberi saya pengecualian limpahan Tindanan juga, kerana fungsi rekursi faktorial kami mengurangkan nilai parameternya pada setiap pelaksanaan. Jadi, nombor negatif akan dikurangkan kepada -6, -7, -8 dan seterusnya. Itulah sebabnya kita pergi ke pengecualian ini.

Sebagai latihan, bolehkah anda cuba mencipta fungsi rekursif untuk nombor negatif?

Petunjuk: Kita boleh mengambil pra-syarat nombor kurang daripada sifar dan menambah satu pada parameter fungsi rekursif kami sehingga sifar datang.

Contoh Fungsi Rekursif dalam C#

Terdapat beberapa contoh baik yang boleh dipetik berkenaan dengan fungsi rekursif:

Kami mempunyai beberapa tempat lain untuk menggunakan fungsi rekursif ini.

  • Cetak nombor dari titik mula dan titik akhir yang diberikan secara berterusan. (Program di bawah)
  • Tambah nombor bermula dari titik mula yang diberikan dan berhenti pada titik akhir atau apabila jumlah tertentu dicapai.
  • Cetak nombor yang dibahagikan dengan mana-mana nombor tertentu dalam mana-mana julat tertentu.
  • Kami mahu mencetak mana-mana nombor garisan atau titik berterusan selepas menulis ayat dan banyak lagi.

Seperti yang anda boleh perhatikan fungsi rekursif adalah serupa dengan fungsi gelung, tetapi di mana kita memanggil fungsi yang sama berulang kali.

Mari kita lihat bagaimana kita boleh menulis fungsi rekursif dalam menambah nombor secara berterusan sehingga program menemui nombor kedua yang diberikan sebagai input.

Kod:

using System;
class First {
static void Main() {
int result,c,d;
string a,b;
Console.Write("Enter value for 1st number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
Console.Write("Enter value for 2nd number :");
b = Console.ReadLine();
d = Convert.ToInt32(b);
result = add(c,d);
Console.WriteLine("Add is : " + result);
}
public static int add(int num1,int num2)
{
int sum ;
sum=num1;
if (num1 < num2 )
{
num1++;
sum=sum+add(num1,num2);
return sum;
}
return sum;
}
}

Di sini, apa yang kami lakukan ialah:

  • Kami telah mengambil dua nombor num1 dan num2 melalui input pengguna
  • Tambah fungsi, tambah nombor bermula dari nombor1 sehingga mendapat nombor2.

Sebagai contoh, jika saya mengambil num1 = 5 dan num2 = 8, maka jumlah output yang kami dapat ialah 5+6+7+8, iaitu 26.

Output:

Fungsi Rekursif dalam C#

Dan bagaimana pula jika, saya memberikan num1 kurang daripada num2?

Output:

Fungsi Rekursif dalam C#

Ia memberikan beberapa sebagai nilai num1 seperti yang pertama, kami menetapkan nilai jumlah kepada nilai num1 dan jumlah kembali jika pernyataan if tidak berkenaan.

Sebagai latihan, bolehkah anda menulis fungsi rekursif untuk mencetak "Saya suka pengekodan" sehingga ia mengikut syarat tertentu?

Petunjuk: Kita boleh mengikut prosedur penambahan yang sama yang dilakukan dalam program di atas.

Kesimpulan

Jadi, di sini kami telah berjaya mendapatkan pelaksanaan fungsi rekursif, bagaimana fungsi ini dipanggil dan beberapa contoh daripadanya. Kami juga mempelajari bagaimana perbezaan mudah dalam panggilan fungsi boleh menjadikan atur cara lari daripada hadnya dan mencipta pengecualian.

Atas ialah kandungan terperinci Fungsi Rekursif dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:Fungsi Matematik dalam C#Artikel seterusnya:Fungsi Matematik dalam C#