Zadanie1_17
Rekurencja - silnia
(25 min)
Opis zadania
Oblicz silni dowolnej liczby naturalnej wykorzystuj c do rozwi zania metod rekurencyjn .
Efekt ko cowy
Celem zadania jest nabycie umiej tno ci stosowania rekurencji w programowaniu
- Zadanie nie wymaga plików wiczeniowych.
Realizacja zadania
W zadaniu utworzysz nowe rozwi zanie, obliczaj ce warto silni, rekurencyjnie. Na formularzu umie cisz kontrolki: TextBox, Label, Button. Utworzysz procedur obsługi zdarzenia zwi zanego z klikni ciem przycisku. B dzie ona oblicza i wy wietla w polu tekstowym warto n!.
Krok 1 – Dodanie odpowiednich kontrolek i rozmieszczenie ich na formularzu
!"
!
!
" #
$
%
& ' ()
Kontrolka
Własno Name
Własno Text kontrolki
kontrolki
Label1
Label1
„Obliczanie silni dla danej liczby
naturalnej n”
Label2
Label2
„n! = 1 * 2 * 3 * ... * n”
Label3
Label3
„Podaj liczb n z przedziału <0,27> Label4
Label4
„n! = „
TextBox1
wartoscN
„”
TextBox2
wynikRekurencyjny „”
Button1
btnOblicz
„Oblicz”
Button2
btnWyczysc
„Wyczy ”
Button3
btnKoniec
„Zako cz”
Krok 2 - Dodanie tre ci funkcji obliczaj cej warto silni
!
#
silniaRekurencyjna,
*
& ' "
$
$
+
, $
'
" #
$
)
Private Function silniaRekurencyjna(ByVal n As Integer) As Long If n = 0 Then
Return 1
Else
Return n * silniaRekurencyjna(n - 1) End If
End Function
Krok 3 – Dodanie kodu obsługi przycisku
-
"
.
/ "
)
Dim n As Integer
Dim wynikRek As Long
If (Not IsNumeric(watroscN.Text)) OrElse _
((wartoscN.Text < 0) Or (wartoscN.Text > 27)) Then MessageBox.Show("Nieprawidłowa warto
!")
Exit Sub
End If
n = CInt(wartoscN.Text)
wynikRek = silniaRekurencyjna(n)
wynikRekurencyjny.Text = CStr(wynikRek)
!
* " 0 ,
"
%
(
%
(
Private Sub btnWyczysc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWyczysc.Click wartoscN.Text = ""
wynikRekurencyjny.Text = ""
wartoscN.Text = "0"
End Sub
Private Sub btnKoniec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKoniec.Click Close()
End Sub
Krok 4 - Test aplikacji
#
1
.
* #
"
,
-
"
1
.
* # "
"
"
,
-
"
2 3
4 -
"
$
"
1
" 5
6
#
%
(
"