程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 巧妙的不用遞歸和循環實現任意數之間的求和

巧妙的不用遞歸和循環實現任意數之間的求和

編輯:關於C

那天,同學的老師出了道題目,讓我們做,不用遞歸和循環求1~100的和?

     自己寫了個代碼今天發出來,看看大家有沒有其他的好方法啊!希望有好方法的留言交流下,,,

     代碼如下:
 
//不用循環和遞歸求和!(C++/VC++6.0) 
#include<iostream> 
using namespace std; 
class calculate 

public: 
       calculate(); 
   int getsum(); 
   static int N; 
   static int SUM; 
}; 
int calculate::N=0; 
int calculate::SUM=0; 
  
calculate::calculate() 

       N++;  www.2cto.com
   SUM+=N; 

  
int calculate::getsum() 

       returnSUM; 

  
void main() 

       intmax,min; 
   cout<<"輸入你想求和的范圍:"<<endl; 
       cout<<"輸入最小數(min>0):"<<endl; 
   cin>>min; 
       while(min<0){                              //min輸入不合法,提示重新輸入; 
              cout<<"輸入最小數(min>0)不合法,重新輸入:"<<endl; 
       cin>>min; 
       } 
       cout<<"輸入最大數(max>0且max>=min):"<<endl; 
       cin>>max; 
       while(max<0||max<min){                    //max輸入不合法,提示重新輸入; 
              cout<<"輸入最大數(max>0&&max>=min)不合法,重新輸入:"<<endl; 
       cin>>max; 
       } 
  
     calculate::N=(min-1); 
   calculate *p=new calculate[max-min+1]; 
   cout<<min<<"~"<<max<<"的和是:"<<p->getsum()<<endl; 
   delete[] p; 
  

 

       這個方法是利用了析構函數的默認構造函數的調用和靜態數據成員的特性來實現的,其實這裡的自動的重復調用析構函數還可以用那個不用new而選用C++容器,只要容器裡面包含的是對象就可以了,如vector等,因為當容器裡面包含的是類對象的時候,當你定義了多少個元素,就也會自動的調用析構函數初始化對象!


      不知道大家有什麼其他的好方法沒,留言交流下啊,(僅限用C/C++實現!)

 摘自 wudemiao的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved