专栏首页达摩兵的技术空间网易递归编程题,魔法币

网易递归编程题,魔法币

场景描述

小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币 魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币 小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。

输入描述: 输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。

输出描述: 输出一个字符串,每个字符表示该次小易选取投入的魔法机器。其中只包含字符’1’和’2’。

比如输入10,返回122

思路解析

递归

得到操作方案首先想到的递归,原因有以下几方面: 每一步的操作与上一步具有直接联系,而需要获得的最终结果显性的是由最后一次全部转化的。向前递归的界限也很明显,就是没有魔法币。

最终方案如下:

var arr=[]
const toOpt = (n)=>{
  if(n>0){
    if(n%2==0){
    n=(n-2)/2
    arr.push('2')
    }else{
      n=(n-1)/2
      arr.push('1')
    }
    return toOpt(n)
  }else{
    let printStr=arr.reverse().join('')
    console.log(printStr)
    arr.length=0
  }
}

用户输入:readline模块

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
rl.question('', (anwser) => {
  // TODO: Log the answer in a database
  console.log(`${anwser}`)
  rl.close();
});

验证:通过所有测试用例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 算法之递归(js版本)

    相信在数学中很常见这个概念,实际在编程中也很常见这样的思维。递归通俗的来说,就是通过不断的将当前问题进行分解,向前追溯直到终点然后再反推求解的过程。

    RobinsonZhang
  • flash的前端解决方案

    flash作为h5 video未完全替代的产物,在目前的pc端仍占有具有的比例,而前端如何去根据浏览器进行判断并根据需要提示给页面是我们必备的常识。

    RobinsonZhang
  • 跨页面通讯的几种方式

    你经常会遇到需要跨标签共享信息的情况,那么本文就跟大家一起回顾下web端有哪些方式可以实现这样的需求。

    RobinsonZhang
  • ASP.NET Core 2.2 : 二十二. 多样性的配置方式

    大多数应用都离不开配置,本章将介绍ASP.NET Core中常见的几种配置方式及系统内部实现的机制。(ASP.NET Core 系列目录)

    梁规晓
  • 从Word Embedding到Bert模型——自然语言处理预训练技术发展史

    作者简介:张俊林,中国中文信息学会理事,目前在新浪微博 AI Lab 担任资深算法专家。在此之前,张俊林曾经在阿里巴巴任资深技术专家,以及在百度和用友担任技术经...

    zenRRan
  • 从Word Embedding到Bert模型——自然语言处理预训练技术发展史

    作者简介:张俊林,中国中文信息学会理事,目前在新浪微博 AI Lab 担任资深算法专家。在此之前,张俊林曾经在阿里巴巴任资深技术专家,以及在百度和用友担任技术经...

    AI科技大本营
  • ASP.NET Core 2.2 : 二十二. 多样性的配置方式

        大多数应用都离不开配置,本章将介绍ASP.NET Core中常见的几种配置方式及系统内部实现的机制。(ASP.NET Core 系列目录)

    FlyLolo
  • 从word2vec到bert:NLP预训练模型发展史

    原文链接:https://zhuanlan.zhihu.com/p/49271699

    石晓文
  • Rstudio关联本地R

    前面提到过Rstudio是一个很好的R集成开发环境,但实际上Rstudio本身是没有太多功能的,它只提供一个可视化的环境,实际上背后还是要调用你本地装的...

    生信交流平台
  • 教程 | 用于金融时序预测的神经网络:可改善移动平均线经典策略

    机器之心

扫码关注云+社区

领取腾讯云代金券