来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很简单,但是不能用循环和条件判断语句.但是理论上所有的递归都可以转化为循环,那是否可以用递归代替循环呢?照着这个思路走下去,貌似可以.可是用递归的话,递归怎么终止呢?这就得在return语句中做文章了.最让人奔溃的是不让用乘除法.但是乘法本质上是加法的累加. 思路: 把循环化为递归. 乘法改为递归实现…
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很简单,但是不能用循环和条件判断语句.但是理论上所有的递归都可以转化为循环,那是否可以用递归代替循环呢?照着这个思路走下去,貌似可以.可是用递归的话,递归怎么终止呢?这就得在return语句中做文章了.最让人奔溃的是不让用乘除法.但是乘法本质上是加法的累加. 思路: 把循环化为递归. 乘法改为递归实现…
1 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 2 思路和方法 (1)递归,不能使用if等条件判断语句,可以使用&&逻辑运算符的短路特性实现.当n=0时,不进行后一个判断的计算,作为递归终止. (2)利用sizeof(a)计算bool数组的字节数,bool类型在C++中占一个字节.bool a = [n][n+1]; 因一共有n*(n+1)个1,下三角或者上三角,第一行:[1]和为…
代码如下: public int Sum_Solution(int n) { int temp = n; boolean b = (temp>0)&&(temp += Sum_Solution(n-1))>0; return temp; }…
#include <iostream> using namespace std; int add_(int a,int b){ return 0; } int Add(int i,bool is=false){ static int num=0; ( is==false &&[]{ num=0; return true; }()); num+=i; ( i>0 &&[i]{ Add(i-1,true); return true; }()); return…
采用递归和三目表达式注意红色字体一定不能写成n-- 1 package com.hunag; public class Sum { static int sum; public static int isum(int n) { sum+=n; sum=n==0?sum:isum(--n); System.out.println(n); return sum; } public static void main(String[] args) { isum(100); System.out.prin…
问题描述:求商,不能用乘法,除法,取模运算. 算法思路:不能用除法,那只能用减法,但是用减法,超时.可以用位移运算,每次除数左移,相当于2倍. public class DividTwoIntegers { public int divide(int dividend, int divisor) { if(divisor == 0) return Integer.MAX_VALUE; if(divisor == -1 && dividend == Integer.MIN_VALUE) re…
题目: 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字及条件判断语句(a?b:c). 思路: 1.构造函数 在类中定义静态成员变量N和sum,在构造函数中++N,sum+=N:如此一来,创建n个该类型的实例,就会调用n次构造函数,对应的静态变量也就随着更新. 2.虚函数 使用递归时,既然不能再一个函数中判断是不是终止递归,那么不妨定义两个函数,一个函数充当递归函数,一个负责处理递归的结束条件: 需要解决的问题就是如何在两个函数中二…
题目:求1+2+-+n, 要求不能使用乘除法.for.while.if.else.switch.case等关键字 以及条件判断语句(A?B:C). java 实现 public class sum { public static boolean fun(int n,int []sum) { sum[0]+=n; return (n>0)&&(fun(n-1,sum)); } public static void main(String[] args) { // TODO Auto-g…
求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 我发现网上的做法都很神,各种理由编译的巧妙办法,就能间接地利用循环来解决,构造函数 递归什么的.想了好久,脑子里只有位运算...终于折腾出来了. 代码真傻,我真的没用循环... #include <stdio.h> #include <iostream> using namespace std; #define LL long long ,…