Algorithm 伪码递归算法

Algorithm 伪码递归算法,algorithm,recursion,time-complexity,pseudocode,asymptotic-complexity,Algorithm,Recursion,Time Complexity,Pseudocode,Asymptotic Complexity,我想创建一个递归伪代码,它将以Ologn复杂度执行 我希望它能找到较低的fi0,fn0和fn

我想创建一个递归伪代码,它将以Ologn复杂度执行 我希望它能找到较低的fi<0和f[1…n],其中f1>0,fn0和fn<0。我们想找到fi<0的最小整数i。为此设计一个在Ologn中运行的算法


你几乎到了,你必须使它相对于p和q,从和到,而不是n。然后,如果from==to,您找到了一个解决方案。这假设在[1…n]范围内始终存在一个解决方案

function firstNegative(f, from, to) {
    if (from == to)
        return from;
    next = from + (to - from) / 2;
    if (f(next) >= 0)
        return firstNegative(f, next + 1, to);
    else
        return firstNegative(f, from, next);
}
print firstNegative(f, 1, n);

你能详细描述你的问题并添加几个简单的例子吗?一般来说,当你遇到一个很难解决的问题时,结束递归,比如1!当计算阶乘时。在过程中使用if语句对其进行测试。与?这个问题本周已出现多次。@Svaberg其描述与Paul Hankin提供的问题相同。是的,我知道,但我不确定我如何能在我的算法中构建!在这个过程中,我会做一些类似于标志的事情,当我的算法达到可解的子问题时,它会是真的并停止递归?我想,我不知道是否可以定义我想停止的可解决问题。我希望你明白我想说的米克尔,你可以搜索二进制递归搜索。对于您的问题,我建议您编写实际代码而不是伪代码,这样您就可以运行并测试它了。@PaulHankin是的,我知道二进制搜索算法,我了解他搜索和找到解决方案的方式。。但正如你所说,我使用单调,我不明白单调是如何排序算法的!在我的问题中,我试图根据二进制搜索算法对数组进行排序,但我无法使二进制搜索算法知道它在搜索什么,我的意思是数字我不知道这个数字,它将是所有的0,谢谢你的回答!你能解释一下为什么要创建下一个变量吗?它似乎与递归中的二进制搜索没有什么区别。我错了吗?下一个变量是介于from和to之间的中间变量。只有当from为0时才是to/2。好的!非常感谢。不客气。与另一个问题相反,你展示了你的尝试。不要因为落选而气馁。我想是你给了我答案!我想用二进制搜索算法来计算Ologn复杂度,并想找到我在单调函数中遇到的第一个负数……我不知道如何停止递归,你帮了我!我并没有因为我在编程界的新手们的反对票而气馁,有些人可能对他们中的大多数人来说都很容易,但对我来说还不是
function firstNegative(f, from, to) {
    if (from == to)
        return from;
    next = from + (to - from) / 2;
    if (f(next) >= 0)
        return firstNegative(f, next + 1, to);
    else
        return firstNegative(f, from, next);
}
print firstNegative(f, 1, n);