我把这个函数写成:
function f = factorial(x)
f = prod(1:x);
f =factorial(5);
end
但是当我尝试运行它时,它表示未定义输入参数。 这有什么问题?
答案 0 :(得分:0)
你已经定义了一个无休止地进行递归的函数。
f = factorial(5);
在第三行中的将再次调用你的函数,然后它会在你的函数到达第三行后再次调用它,然后再调用你的函数......所以它永远不会完成。
实现递归解决方案时,您需要提供基本案例。这是计算阶乘的一个例子。
function f = factorial(x)
if x == 0 % this is the base case
f = 1;
else
f = x*factorial(x-1); % this is the recursive case
end
end
示例:
>> factorial(5)
ans =
120
至于你的
输入参数未定义
问题,您需要告诉我们您实际使用的输入参数。对于上面的示例,任何*整数x>=0
都应该有效。
*只要f
有足够的字节来保存结果。