Zaloguj się
Blog na Matlablog
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

pomoc silnia rekurencyjna
Forum MATLAB Strona Główna-> MATLAB
Post Wysłany: 28 Sierpnia 2017, Pon 6:57 pm Temat postu: pomoc silnia rekurencyjna Odpowiedz z cytatem
 
AUTOR:
bostontea



Dołączył: 28 Sie 2017
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
Witam, od kilku dni zaczynam się poruszać w środowisku matlab. Mam problem z napisaniem programu liczącego silnię rekurencyjnie dla każdego elementu tablicy,

Kod:

clc
clear
;
a=round(20*rand(10,15));
disp(a)
s=silniar(a);
disp(s);


Kod:

function[s]=silniar(a)
s=1;
if
a>0
    s
=silniar(a-1)*a;
end;


Za każdym razem s=1, co mogę zrobić? Przyznam, że jestem dość zielona:)
Wbudowana funkcja factorial działa, ale to chyba nie to samo.
Z góry dziękuję.


 

Post Wysłany: 28 Sierpnia 2017, Pon 7:26 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
mc2
Może pisać książki


Dołączył: 19 Maj 2009
Posty: 2217


Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
Najprostszym rozwiązaniem będzie wywołanie funkcji silniar w pętli:
Kod:
clc
clear
;
a=round(20*rand(10,15));
disp(a)
s = zeros(size(a));
for
i=1:numel(a)
s(i)=silniar(a(i));
end
disp
(s);


Możesz tez oczywiście zmodyfikować kod funkcji silniar poprzez analogiczne dodanie pętli wewnątrz tej funkcji.
 

Post Wysłany: 28 Sierpnia 2017, Pon 10:29 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
bostontea



Dołączył: 28 Sie 2017
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
mc2 napisał:
Najprostszym rozwiązaniem będzie wywołanie funkcji silniar w pętli:
Kod:
clc
clear
;
a=round(20*rand(10,15));
disp(a)
s = zeros(size(a));
for
i=1:numel(a)
s(i)=silniar(a(i));
end
disp
(s);


Możesz tez oczywiście zmodyfikować kod funkcji silniar poprzez analogiczne dodanie pętli wewnątrz tej funkcji.


Wielkie dzięki, aż mi wstyd, że to było takie proste Confused


 

Post Wysłany: 29 Sierpnia 2017, Wto 9:10 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
darekc
Może pisać książki


Dołączył: 19 Lis 2007
Posty: 565
Skąd: P.Śl. Gliwice


Ogląda profil użytkownika Wyślij prywatną wiadomość
Jeszcze inne rozwiązanie:

Kod:
function [s] = silniar(a)

if
a>1
  s
= silniar(a-1) * a;
else
 
s = 1;
end


 

Forum MATLAB Strona Główna-> MATLAB
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 38213377
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Jak usunąć wiersz z macierzy?  (30 Sierpnia 2017, Sro 5:01 pm)
Co zdrowego zjeść na śniadanie?  (30 Sierpnia 2017, Sro 10:50 am)
pomoc silnia rekurencyjna  (28 Sierpnia 2017, Pon 6:57 pm)
Programy on-line do ozdabiania zdjęć  (28 Sierpnia 2017, Pon 11:20 am)
Pomoc z interpolacją  (26 Sierpnia 2017, Sob 10:58 pm)
Tapeta czy fototapeta?  (25 Sierpnia 2017, Pią 2:45 pm)
Annabelle Narodziny Zła Cały Film Online  (23 Sierpnia 2017, Sro 7:38 pm)
Pomoc z przetwarzaniem sygnałów - Kraków  (23 Sierpnia 2017, Sro 6:27 pm)
Pomoc  (23 Sierpnia 2017, Sro 12:32 pm)
Kamera sportowa  (23 Sierpnia 2017, Sro 6:00 am)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum