我正在解决以下问题:
我意识到我的代码有点偏,但我想创建一个for循环来确定整数x(输入值)是否至少小于或等于谐波系列的总和。 / p>
这是我到目前为止所做的:
function n =one_per_n(x)
if x > 10000
n = -1;
end
total = 0;
i = 0;
for i = 1:10000
if x >= total
n = ceil(total);
else
total = (1/i) + total;
end
end
我在while循环中添加了我的尝试。我意识到这是错的,但任何帮助都会受到赞赏。
function n =one_per_n(x)
if x > 10000
n = -1;
end
total = 0;
i = 0;
for i = 1:10000
while total <= x
total = (1/i) + total;
end
end
n =总计;
答案 0 :(得分:2)
你不需要使用一些循环:
function n = one_per_n(x)
lim = min(10000,exp(x));
value = cumsum(1./(1:lim));
n = find(value >= x,1);
if isempty(n)
n = -1;
end
答案 1 :(得分:0)
在这种情况下,while循环是一个更好的选择我认为
function [total, n] = one_per_n(x)
% This is a good initial check, good work
if x > 10000
n = -1;
return;
end
% Initialize the variables
total = 0;
n = 0;
% While not finished
while (total < x)
% Number of terms
n = n + 1;
total = total + 1/n;
end
end