2017-03-22 2 views
-1

myfact (n) Funktion berechnen Fakultät von n.Wie kann ich verschachtelte rekursive Funktion in Matlab schreiben

function [ fact ] = myfact(x) 
temp = 0; 
if (x == 1) 
    temp = 1; 
else 
    temp = x*myfact(x-1); 
end 
fact = temp; 
end 

Die Funktion myfactSum() berechnet die Summe der Rückgabewerte von "myfact". factNums ist ein Array, das die Fakultät jedes Werts enthält. Zum Beispiel: factNums (2) = 2!

function [total] = myfactSum(n,factNums) 
    if(n==1) 
     return 
    else 
    result = myfact(n); 
    factNums(n) = result; 
    total=sum(factNums); 
    myfactSum(n-1,factNums); 
    end 
end 

Testing es Skript oben;

n = 4; 
factNums = zeros(1,n); 
x=myfactnum(n,factNums); 

y=0; 
for i=1:checkValues 
    y=y+myfact(i); 
end 

Zu den Ergebnissen Skript x = 24, y = 33 Eine rekursive und Schleife richtige Antwort finden, jedoch verschachtelt rekursive Funktionen geben nur die Fakultät letzten Wert. Ich versuche, die rekursiven Funktionen zu debuggen, füllt es die factNums mit Werten [1,2,6,24] Ende der Funktionswerte, aber wenn es zurück zu Hauptscript-Werten verschwindet.

variable values after i run the script

+0

Sie kehren 'total = Summe (factNums)', dieser Wert ist, die Summe aus '[1,2,6,24]' was korrekt als '33' ausgegeben wird. Mach einfach die Summe nicht, wenn du die Summe nicht willst ... – Wolfie

Antwort

0

ich ändern myfactSum, und es funktioniert :) Es ist so einfach :)

function [sum] = myfactnum(n) 

temp=1;  
    if(n==0) 
     temp=0; 
    else 
    temp=myfact(n)+myfactnum(n-1); 
    end 
sum=temp;  
end 
Verwandte Themen