fork download
  1. #include <iostream>
  2. #include <functional>
  3.  
  4. using namespace std;
  5. typedef function<int(int)> func;
  6.  
  7. int f2(int x){
  8. return x*x;
  9. }
  10.  
  11. int f3(int x){
  12. return x*x*x;
  13. }
  14.  
  15. //cach 1, dung recursion
  16. int sum1(int n,func f){
  17. if(n>0) return f(n)+sum1(n-1,f);
  18. else return 0;
  19. }
  20.  
  21. //cach 2, dung loop
  22. int sum2(int n, func f){
  23. int s=0;
  24. for(int i=1;i<=n;i++) s+=f(i);
  25. return s;
  26. }
  27.  
  28. //cach 3, dung cong thuc
  29. int sum3(int n, int k){
  30. int temp=(n*(n+1))/2;
  31. switch(k){
  32. case 1: return temp;
  33. case 2: return temp*(2*n+1)/3;
  34. case 3: return temp*temp;
  35. default:return 0;
  36. }
  37. }
  38.  
  39. //cach 4, dung binary recursion
  40. int sum4(int nfrom,int nto, func f){
  41. if (nfrom==nto) return f(nfrom);
  42. else {
  43. int nmiddle=(nto+nfrom)/2;
  44. return sum4(nfrom,nmiddle,f)+sum4(nmiddle+1,nto,f);
  45. }
  46. }
  47.  
  48. int main(){
  49. cout<<sum1(3,f2);
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 3300KB
stdin
Standard input is empty
stdout
14