hiper111
-
Postów
11 -
Dołączył
-
Ostatnia wizyta
Aktywność reputacji
-
hiper111 przyznał(a) reputację dla kruszynski w LISP program obliczajacy wyraz ciagu
do tego właśnie służy rekurencja
powinno być coś typu
( defun a ( n / ) (cond ( ( = n 0 ) 5 ) ( t (+ (* 3 (a (- n 1 ) ) ) 2 ) ) ) )
-
hiper111 przyznał(a) reputację dla kruszynski w LISP program obliczajacy wyraz ciagu
n to parametr wywołania funkcji
/ oddziela parametry od zmiennych lokalnych. w tym przypadku nie jest potrzebne ale z przyzwyczajenia ( makro w edytorze) mi się napisało
-
hiper111 przyznał(a) reputację dla Parikon w LISP program obliczajacy wyraz ciagu
Praktyczny kurs AutoLISP-u
-
hiper111 przyznał(a) reputację dla kruszynski w LISP program obliczajacy wyraz ciagu
O to właśnie chodzi, "a" to nie zmienna, tylko nazwa funkcji, która ma być rekurencją.
czyli Ty mnożysz 3 * a (jako zminną) * (n-1)
ma być 3 * a ( jako wynik dla obliczenia funkcji a dla wartości (n-1))
-
hiper111 przyznał(a) reputację dla Parikon w LISP program obliczajacy wyraz ciagu
(cond ((evenp a) a) ;jeśli a jest parzyste, zwróć a ((> a 7) (/ a 2)) ;inaczej, jeśli a jest > niż 7, zwróć a/2 ((< a 5) (- a 1)) ;inaczej, jeśli a jest < niż 5, zwróć a-1 (t 17) ;inaczej zwróć 17 ) => 2 (cond
((= n 0) 5) ; jeśli n jest 0 to zwróć 5
((> n 0) (wzór na a)) ; zwróć a
) ; koniec cond
Dawno nie pisałem nic w Lispie ale czy nie tak to powinno być?
-
hiper111 przyznał(a) reputację dla Parikon w LISP program obliczajacy wyraz ciagu
powiedz coś maszynie o zmiennej a.
-
hiper111 przyznał(a) reputację dla kruszynski w LISP program obliczajacy wyraz ciagu
(defun wyraz(n,a) (cond ((= n 0) ( a)) ((> n 0) (+ (* (* (- n 1) 3 a) ) 2)))) ja tu widzę kilka błędów:
1. dlaczego a jest parametrem wywołania?
2. w treści zadania jest jakaś magiczna liczba 5. Nie ma jej w kodzie. zastanów się gdzie powinna być
3. w pierwszym warunku: ( a ) ?
4. w drugim warunku nawiasy są pomieszane
To tak na początek. jak się z tym uporasz i dalej nie będzie działało to daj znać.
-
hiper111 przyznał(a) reputację dla kruszynski w LISP program obliczajacy wyraz ciagu
O czym może to świadczyć?
((= n 0) (= a 5)) znaczy: jeśli n jest równe 0, to sprawdź czy a jest równe 5 .
-
hiper111 przyznał(a) reputację dla kruszynski w LISP program obliczajacy wyraz ciagu
przypisanie wartości do zmiennej to setq czyli (setq a 5)
tylko po co tutaj a ?
Mała podpowiedź:
w tym przypadku trzeba wykorzystać rekurencję.