吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1774|回复: 37
收起左侧

[讨论] 希望用不同语言不同算法实现下面的递归操作

[复制链接]
回帖奖励 160 CB吾爱币 回复本帖可获得 10 CB吾爱币奖励! 每人限 1 次
badyun 发表于 2020-10-28 22:50
本帖最后由 badyun 于 2020-10-28 22:52 编辑

希望以各种方式和语言实现下面的递归操作,纯属技术讨论,回帖100%奖励




我先抛砖引玉,写一段js的实现

[JavaScript] 纯文本查看 复制代码
function calc(n) {
    const fib = (n, sum1 = 1, sum2 = 1) => {
        if (n <= 2) return sum2;
        return fib(n - 1, sum2, sum1 + sum2)
    }
    if (n == 1) return 1
    else if (n % 2 == 0) return fib(n / 2 + 1)
    return 2 * fib((n + 1) / 2)
}


效果如下

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

爱飞的猫 发表于 2020-10-28 23:21

回帖奖励 +10 CB吾爱币

[C] 纯文本查看 复制代码
#include <stdio.h>

unsigned int fib(unsigned int n, unsigned int sum1 = 1, unsigned int sum2 = 1) {
    if (n <= 2) return sum2;
    return fib(n - 1, sum2, sum1 + sum2);
}

unsigned int calc(unsigned int n) {
    if (n == 1) return 1;
    else if (n % 2 == 0) return fib(n / 2 + 1);
    return 2 * fib((n + 1) / 2);
}

int main() {
    for (unsigned int i = 1; i < 10; i++) {
        printf("%u: %u\n", i, calc(i));
    }

    return 0;
}

1: 1
2: 1
3: 2
4: 2
5: 4
6: 3
7: 6
8: 5
9: 10

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
苏紫方璇 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

头像被屏蔽
噼哩叭啦蹦 发表于 2020-10-28 23:21

回帖奖励 +10 CB吾爱币

提示: 作者被禁止或删除 内容自动屏蔽
no-problem 发表于 2020-10-28 23:23

回帖奖励 +10 CB吾爱币

本帖最后由 no-problem 于 2020-10-29 00:40 编辑

突然感觉好难   
牛逼牛逼  
这版主睡着了吧     

免费评分

参与人数 1吾爱币 -15 收起 理由
苏紫方璇 -15 请勿灌水,提高回帖质量是每位会员应尽的义务!

查看全部评分

kesai 发表于 2020-10-28 23:24

回帖奖励 +10 CB吾爱币

这个好难啊
menghen 发表于 2020-10-28 23:29

回帖奖励 +10 CB吾爱币

貌似楼主的错了 2L是正确的
kesai 发表于 2020-10-28 23:37
[Python] 纯文本查看 复制代码
def fib(n, sum1=1, sum2=1):
    return fib(n-1, sum2, sum1+sum2) if n > 2 else sum2


def calc(n):
    return 1 if n == 1 else 2*fib((n+1)/2) if n % 2 else fib(n/2+1)


for i in range(8):
    print(f'第{i}年, {calc(i)}')
kesai 发表于 2020-10-28 23:41
[JavaScript] 纯文本查看 复制代码
var fib = (n, sum1 = 1, sum2 = 1) => n > 2 ? fib(n - 1, sum2, sum1 + sum2) : sum2;
var calc = n => n === 1 ? 1 : n % 2 ? 2 * fib((n + 1) / 2) : fib(n / 2 + 1)
for (var i = 0; i <= 7; i++) {
    console.log(`第${i}年,${calc(i)}`)
}
madson 发表于 2020-10-29 00:04

回帖奖励 +10 CB吾爱币

有空研究一下。。。。
figoshen 发表于 2020-10-29 00:30

回帖奖励 +10 CB吾爱币

孤阳不生 孤阴不长
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表