这个算法怎么解!!! 大家帮忙看看!!

问题描述

一个大于0的整数 N , 求 2 * N + 4*N + 8*N + 16*N 以此类推,当X*N 大于 5000的时候输出! 然后从小到大以此输出 2*N 、 4*N 、 8*N 、 16*N X*N .... 不大于5000 输出完之后再倒着从大到小输出 X*n .... 16*N 、8*N 、4*N 、2*N 不能用循环 不能用本地变量!

解决方案

public static void print(int n){ if((n = n << 1) <= 5000) { System.out.print(n + " "); print(n); System.out.print(n + " "); } else { System.out.println(); }}
解决方案二:
//要求是得到X以後先打印X的結果,再正序打印累加序列的話。需要在計算的時候得用減法,保證遞歸棧的順序正確。int Count(int result, int X, int N, boolean isFirstEnter ){if ( isFirstEnter ){if ( result > 0 ){X++;result -= 2*X*N;Count(result, X, N, isFirstEnter);System.out.println(2*X*N);}else{//最終結果已經得到,dSystem.out.println(X);}if ( result == 5000 ){//正序打印完畢,開始第二次遞歸,並進行倒序打印Count(result, 1, N, false);}}else{if ( result > 0 ){System.out.println(2*X*N);X++;result -= 2*X*N;Count(result, X, N, isFirstEnter);}}}int invertedOrderPrint(int result, int X, int N){if ( result - 2*X*N > 0 ){X++;result invertedOrderPrint()}}
解决方案三:
这个主要考察的是递归的理解 因为递归 有个入栈和出栈的过程哈! public class Test{ static void test(int n){ n*=2; if(n<=5000) { System.out.print(n); test(n); System.out.print(n); } else { System.out.println(); return; } } static void main(String args[]) { if(args.length<2) System.out.println("输入n"); else test(Integer.parseInt(args[1])); } } 如果正确,请选为最佳答案 谢谢
解决方案四:
这个..明显考递归的啦!public class test{ static void test(int n){ n*=2; if(n<=5000){printf("%d,",n);test(n);printf("%d,",n);}else{printf("n");return;} } static void main(int argc,String args[]) { } }
解决方案五:
既然不能用循环,楼主必须要想到这个其实是考察你递归式的运用public static int TowPowWithN(int n) {int sum = TowPowWithN(n, 2, 0);return sum;}public static int TowPowWithN(int n, int x, int sum) {if (n == 0) {return 0;}int y = n * x;System.out.println(y);sum += y;if (y >= 5000) {return sum;} else {x *= 2;return TowPowWithN(n, x, sum);}倒序打印我是没想出来 楼主可以自己想想了

时间: 2024-08-01 16:04:24

这个算法怎么解!!! 大家帮忙看看!!的相关文章

喜欢算法的来帮帮忙 这道题实在是不会了

问题描述 喜欢算法的来帮帮忙 这道题实在是不会了 地址 :http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1005&cid=29617 麻烦贴下代码就行 解决方案 http://zhidao.baidu.com/link?url=zwfY7XXK0ltMcUGzCgW1L-rBh9EdLp60MP9wKcdTYik9vXGCYKqVVZ-8YACrZWOPYoHZoGm6skoRnzsK8QDg3KTPWoKV9F6Qk_fwCbSyF

Floyd求最短路径算法详解

倘若我们要在计算机上建立一个交通咨询系统则可以采用图的结构来表示实际的交通网络.其实现最基本的功能,求出任意两点间的最短路径, 求最短路径的经典方法有很多种,最常用的便是迪杰斯特拉算法和佛洛依德(Floyd)算法,这篇文章就着重介绍Floyd算法. 求两点之间的最短路径无外乎有两种情况,一种就是从一点直接到另一点,另一种就是从一点经过n个节点后再到另一个节点,比如说要从A到B,则有两种情况就是A直接到B,或者是从A经过N个节点后再到B,所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离

编程-位操作 算法精解 C语言描述

问题描述 位操作 算法精解 C语言描述 bit_rot_left是怎么操作的?bits[8]={0,1,2,3,4,5,6,7}左移一位得bits[8]={0,2,4,6,8,10,12,14} 解决方案 <算法精解:C语言描述> 基本信息 原书名:Mastering Algorithms with C 作者: Kyle Loudon [作译者介绍] 译者: 肖翔 陈舸 丛书名: O'Reilly精品图书系列 出版社:机械工业出版社 ISBN:9787111394266 上架时间:2012-9

PHPthinkphp框架 foreach问题 算上是算法 求大神帮忙

问题描述 PHPthinkphp框架 foreach问题 算上是算法 求大神帮忙 单分给客服,要求是平均分 举个例子假如10个订单分给3个客服 最后结果是 第一个客服4个订单 其余两个客服3个订单 要是每次来的订单少的话 一次来一个的话 那么第一个客服总是分的订单最多 现在要做的是记录我上次订单分给谁然后这次接着上次那个客服接着分图片说明 解决方案 这个简单,随机产生一个数字,然后从那个起始的数字开始分.再转回来. 解决方案二: 在另外的一个问答里面有回答过 参考js做的演示代码,注意不要点太快

求一个类似Excel单元格计算算法,请大家帮帮忙.给加分

问题描述 求一个类似Excel单元格计算算法,请大家帮帮忙.给加分 解决方案 解决方案二:没看太明白...那个算法是啥算法?解决方案三:定义个二维数组.然后根据坐标里的值计算!解决方案四:up解决方案五:应该是预置一些算法比如算法1是等差数列,算法2是等比数列依次用这些算法来匹配已经选中有值,如果匹配上了,就接着往下计算,然后设置后面单元格的值.对同一些数据可能多种算法能匹配情况,取前面的算法

javascript快速排序算法详解_javascript技巧

"快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,找一个基准点 (2)建立两个数组,分别存储左边和右边的数组 (3)利用递归进行下次比较 看一个demo:http://jsdo.it/norahiko/oxIy/fullscreen(网页打开可能较慢,慢慢等待吧) <script type="text/javascript"> function quickSort(arr){ if(arr.length<=1){ return

Javascript实现快速排序(Quicksort)的算法详解_javascript技巧

目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快.它是图灵奖得主C. A. R. Hoare(1934--)于1960时提出来的. "快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元素,都移到"基准"的左边:所有大于"基准"的元素,都移到"

算法详解之回溯法具体实现_C 语言

理论辅助: 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯算法解决问题的一般步骤为: 1.定义一个解空间,它包含问题的解. 2.利用适于搜索的方法组织解空间. 3.利用深度优先法搜索解空间. 4.利用限界函数避免移动到不可能产生解的子空间. 问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性. 还是那个基调,不喜欢纯理论的东西,喜欢使用例子来讲诉理论,在算法系列总结:动态规划(

机器学习之从极大似然估计到最大熵原理以及EM算法详解

一.极大似然估计 极大似然估计是建立在极大似然原理的基础上的一个统计方法,极大似然原理的直观想法是,一个随机试验如有若干个可能的结果A,B,C,- ,若在一次试验中,结果A出现了,那么可以认为实验条件对A的出现有利,也即出现的概率P(A)较大.极大似然原理的直观想法我们用下面例子说明.设甲箱中有99个白球,1个黑球:乙箱中有1个白球.99个黑球.现随机取出一箱,再从抽取的一箱中随机取出一球,结果是黑球,这一黑球从乙箱抽取的概率比从甲箱抽取的概率大得多,这时我们自然更多地相信这个黑球是取自乙箱的.

机器学习(二)--- 分类算法详解

感觉狼厂有些把机器学习和数据挖掘神话了,机器学习.数据挖掘的能力其实是有边界的.机器学习.数据挖掘永远是给大公司的业务锦上添花的东西,它可以帮助公司赚更多的钱,却不能帮助公司在与其他公司的竞争中取得领先优势,所以小公司招聘数据挖掘/机器学习不是为了装逼就是在自寻死路.可是相比Java和C++语言开发来说,机器学习/数据挖掘确实是新一些老人占的坑少一些,而且可以经常接触一些新的东西.还是赶紧再次抓住机会集中的再总结一下吧,不能再拖拖拉拉了.  其实数据挖掘的主要任务是分类.聚类.关联分析.预测.时