Javascript 递归函数的增量区间

Javascript 递归函数的增量区间,javascript,Javascript,我有一个递归函数,每次调用它都会减一个最大值。我试图以指数的方式增加间隔值 每次我都想增加间隔值。 现在我只有一个n值,它的值在下降,所以我想如果我可以反转这个数字,用它来增加间隔的值?有人知道一种更简单的方法来获得每次增加的间隔值吗 const myFunc = async(fn, n = 3) => { const interval = 3000; if (n === 1) { return 'bailed'; } await new Pro

我有一个递归函数,每次调用它都会减一个最大值。我试图以指数的方式增加间隔值

每次我都想增加间隔值。 现在我只有一个n值,它的值在下降,所以我想如果我可以反转这个数字,用它来增加间隔的值?有人知道一种更简单的方法来获得每次增加的间隔值吗

const myFunc = async(fn, n = 3) => {
    const interval = 3000;
    if (n === 1) {
      return 'bailed';
    }
    await new Promise(r => setTimeout(r, interval));
    return myFunc(fn, n - 1);
}

假设递归函数中已经定义了
n
,您可以利用它来生成应该是什么间隔。我将用一些常量重新定义您的代码以帮助您


const MAX_递归=3;
常数初始间隔=3000;
const BACKOFF_INTERVAL=1000;
常量myFunc=async(fn,n=MAX\u递归)=>{
常数间隔=初始间隔+(最大重复-n)*退避间隔;
如果(n==1)返回“保释”;
等待新的承诺(r=>setTimeout(r,interval));
返回myFunc(fn,n-1);
}
这意味着对于每一次迭代,超时都会增加
退避间隔

对于指数实现,与第一个示例相比,您只需要更改它使用的函数


const MAX_递归=3;
常数初始间隔=3000;
const BACKOFF_乘数=2;
常量myFunc=async(fn,n=MAX\u递归)=>{
常数间隔=初始间隔*数学功率(退避乘数,(最大递归-n));
如果(n==1)返回“保释”;
等待新的承诺(r=>setTimeout(r,interval));
返回myFunc(fn,n-1);
}

如果给定常数,这将导致以下退避时间:
3000、6000、12000等。
您可以修改常数以产生不同的结果。

max变量定义在哪里?关于“我试图以指数方式递增区间值”-3000、4000、5000,6000不是指数型的,它是线性的。@jamiec你说得对,我不应该给出线性的例子。谢谢Daniel,我以指数的方式加入了我的评论,然后又添加了一个线性示例,这就是你所做的,效果非常好。我该如何使其指数增长?我添加了一个指数示例。如果它回答了你的问题,请不要忘记将答案标记为正确。