为了账号安全,请及时绑定邮箱和手机立即绑定

一个算法问题,,

一个算法问题,,

郎朗坤 2018-07-11 14:14:52
如果有很多(这种规律) 的数字 1  4  9  16 25 问题:1+4+16 =21怎么通过21得到  1,4,16 这个几个数,,,这个算法如何实现
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

先从1开始枚举i,当i^2大于n(你读入的数)时跳出并记录i-1,比如读入21时i=5就跳出了,记录一个4,然后重复这个操作直到1

代码如下,

void Function(int k) {
    if (k == 1) {
        printf("1\n");
        return;
    }

    int i;
    for (i = 1; i * i <= k; i++);
    i--;
    Function(k - i * i);
    printf("%d\n", i * i);
}

例如输入21就会输出:

1

4

16

望采纳


查看完整回答
反对 回复 2018-08-13
  • 1 回答
  • 0 关注
  • 741 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信