美文网首页Java 杂谈
用函数f(x)来讲递归

用函数f(x)来讲递归

作者: 大黑跟小白的日常 | 来源:发表于2019-01-16 17:36 被阅读0次

用函数f(x)来讲递归

一旦找到了,f(x)与f(x+b)、x 之间的某些固定关系,就找到了f关于x的递归算法。

1、比如求1+2+3+.....+x的和的递归算法。

就是 f(x) = f(x-1)+x; f(1) = 1

那么有递归算法

int f(int n) {

    if(n==1) return 1;

    return f(n-1)+n;

}

2、比如求自然数x的阶乘。

那么就有f(x) = f(x-1) * x; f(1) = 1;

那么求阶乘的递归算法

int f(int n) {

    if(n==1) return 1;

    return f(n-1)*n;

}

3、比如a的x次方。

那么有f(a, x) = a * f(a, x-1)

那么有它的递归算法

    static int f(int a, int x) {

        if (a == 0)

            return 0;

        if (x == 0)

            return 1;

        if (x == 1)

            return a;

        return a * f(a, x - 1);

    }

递归并不是最优算法。在确定步骤的情况下,不建议使用递归。可以使用迭代算法进行替代

比如上面的第3题

    static int f2(int a, int x) {

        if (a == 0)

            return 0;

        if (x == 0)

            return 1;

        int sum = 1;

        for (int i = 1; i <= x; i++) {

            sum = a * sum;

        }

        return sum;

    }

相关文章

网友评论

    本文标题:用函数f(x)来讲递归

    本文链接:https://www.haomeiwen.com/subject/wzamdqtx.html