1. 程式人生 > >《劍指offer》求1+2+3+...+n

《劍指offer》求1+2+3+...+n

【 宣告:版權所有,轉載請標明出處,請勿用於商業用途。  聯絡信箱:[email protected]

題目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

思路
這道題初看起來貌似並想不到什麼太好的方法,但是如果我們熟悉C++的特性,或者對遞迴比較瞭解的話,還是能找到一些解決的方法

1.使用遞迴

class Solution
{
	public:
		int Sum_Solution(int n)
		{
			int sum = n;
			bool flag = (n>0) && ((sum+=Sum_Solution(n-1))>0);
			return sum;
		}
};

2.建構函式
class Temp
{
    public:
        Temp()
        {
            ++N;
            Sum+=N;
        }
        static void Reset()
        {
            N = Sum = 0;
        }
        static int GetSum()
        {
            return Sum;
        }
    private:
        static int N;
        static int Sum;
};
 
int Temp::N = 0;
int Temp::Sum = 0;
 
class Solution
{
    public:
        int Sum_Solution(int n)
        {
            Temp::Reset();
            Temp *a = new Temp[n];
            delete []a;
            a = NULL;
            return Temp::GetSum();
        }
};

3.虛擬函式
class A;
A* Array[2];
 
class A
{
    public:
        virtual int Sum(int n)
        {
            return 0;
        }
};
 
class B:public A
{
    public:
        virtual int Sum(int n)
        {
            return Array[!!n]->Sum(n-1)+n;
        }
};
 
class Solution
{
    public:
        int Sum_Solution(int n)
        {
            A a;
            B b;
            Array[0] = &a;
            Array[1] = &b;
            return Array[1]->Sum(n);
        }
};


相關推薦

Offer--1+2+3+...+n

題目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 先上程式碼: public class Solution { public int Sum_Solution(int

offer-1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)

題目如下: 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C) 本題考的知識點就兩點 && 運算子 false && true =>

[Offer] 1+2+3+...+n(Python)

題目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 思路 思路一:Python語言特性 思路二:遞迴 + 邏輯與的短路特性代替if語句 程

offer____1+2+3+...+n

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 int Sum_Solution(int n) { int sum = n; sum && (sum +

offer第64:1+2+3+...+n

題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 # -*- coding:utf-8 -*- class Solution: def Sum_Solution(self, n):

offer系列(十七)1+2+3+...+n,不用加減乘除做加法,把字串轉換成整數

求1+2+3+...+n 題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 解題思路: 法一:利用python的特性 法二:用兩個函式,一個遞迴,另一個終止遞迴。如果對n連續進

offer 47. 1+2+3+...+n

原題 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 Reference Answer 思路分析 思路很清奇,採用遞迴思路即可。 # -*- coding:utf-8 -*- cl

offer1+2+3+……+n

題目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 public class Solution { public int Sum_Solution(int n) {

offer》-- 構建乘積陣列、1+2+3+...+n、不用加減乘除做加法、包含min函式的棧

 一、構建乘積陣列: 1、題目: 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 2、解題思路: B[i]的

offer系列(47):1+2+3+...+n

題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 樣例 輸入5 輸出15 思路分析 方法一:利用Math類的api實現n(n+1),即Math.pow(

offer-47:1+2+3+...+n

題目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 思路 1.需利用邏輯與的短路特性實現遞迴終止。 2.當n==0時,(n>0)&&((sum+=Sum_Sol

offer---471+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 public class Solution { public int Sum_Solution(int n) { // if(

1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)(offer

今天在牛客網上遇到這樣一道題目,求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C) 一般大家在看到這種題目的時候是完全沒有頭緒的,但是我們可以從多方面進行思考,首先我們應該想

1+2+3+...+n (不能使用條件語句和乘除法)(Java offer

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 public class number { //遞迴 //利用邏輯與的短路特性實現遞迴終止 //當n==0時,(n>

offer1+2+3+...+n

【 宣告:版權所有,轉載請標明出處,請勿用於商業用途。  聯絡信箱:[email protected]】 題目描述求1+2+3+...+n,要求不能使用乘除法、for、while、i

Offer47:1+2+3....n

思路: 運用遞迴的思路,遞迴停止的條件是n=0,然後回溯。 要注意python中邏輯運算子的用法,a  and  b,a為False,返回a,a為True,就返回b # -*- coding:utf-8 -*- class Solution: total=0

46、1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

closed else while spl 判斷語句 stat 條件 執行 ret 思路:循環或者遞歸都有個結束條件和執行條件。用&&短路與代替。 //短路與&&;就是只有前一個條件滿足才可以去判斷第二個條件。 //遞歸的出口

1+2+3+....+n

函數指針 typedef c語言 ace pri pre sin 變量 code 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等關鍵字及條件判斷語句(a?b:c)。 1、構造函數 在類中定義靜態成員變量N和sum,

47、1+2+3+...+n

n) col 除法 clas 條件判斷 als pub turn 返回 一、題目 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 二、解法 1 public class So

471+2+3+...+n

描述 blog lean 判斷 public 如何 bool gpo post 題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 用遞歸 1 public clas