开发者社区> 问答> 正文

PASCAL 2的幂次方 递归算法

PASCAL 2的幂次方 递归算法

展开
收起
知与谁同 2018-07-15 11:00:35 1762 0
4 条回答
写回答
取消 提交回答
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    readln(n);
    writeln(1 shl n);
    最好不要用递归
    2019-07-17 22:55:16
    赞同 展开评论 打赏
  • 不要求高精的话2的幂用shl(左移)运算最快

    你是不是想要用快速幂
    function f(x:longint):qword;
    var
    a:qword;
    begin
    if x=1 then f:=2 else
    begin
    a:=f(x div 2);
    f:=a*a*(x mod 2+1)
    end;
    end;

    -------------------------

    题解。

    2019-07-17 22:55:16
    赞同 展开评论 打赏
  • 静静的看着你们
    题解么。
    2019-07-17 22:55:16
    赞同 展开评论 打赏
  • 杀人者,打虎武松也。
    var n:int64;
    procedure work(x:int64);
    var t,k:int64;
    begin
    if x=1 then
    begin
    write('2(0)');
    exit;
    end;
    if x=2 then
    begin
    write('2');
    exit;
    end;
    if x=3 then
    begin
    write('2+2(0)');
    exit;
    end;
    t:=2;
    k:=0;
    while t<=x do
    begin
    t:=t*2;
    k:=k+1;
    end;
    write('2(');
    work(k);
    write(')');
    if (x-t div 2<>0) then
    begin
    write('+');
    work(x-t div 2);
    end;
    end;
    begin
    readln(n);
    work(n);
    end.
    2019-07-17 22:55:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载