मैं n से कम सभी सकारात्मक पूर्णांकों के योग की गणना कैसे कर सकता हूं?


3

मेरा निम्नलिखित कार्य है:

f(n) = f(n - 1) + (n - 1)
f(0) = 0
n >= 0

मेरे पास है n स्तंभ A पर घोषित किया गया, और इसके परिणाम की आवश्यकता है f(n) कॉलम B पर।

मैं इस फंक्शन के लिए एक्सेल फॉर्मूला को बराबर करने की कोशिश कर रहा हूं।

नमूना परिणाम:

A | B
--+--
0 | 0

या:

A | B
--+--
1 | 0

या:

A | B
--+--
4 | 6

लेकिन कभी नही :

A | B
--+--
0 | 0
1 | 0
2 | 1
...

सबसे बड़ी समस्या है, मैं इसके मूल्य का अनुकरण नहीं कर सकता f(n - 1)। इसलिए उपरोक्त उदाहरण की तरह पिछली पंक्ति को संदर्भित करना अमान्य है। मुझे लगभग यकीन है कि उत्तर तुच्छ है, मैं अभी इसे नहीं ढूंढ सकता।

जवाबों:


14

क्या यह मदद करता है?

f(n) = sum of all positive integers less than n

यह, विशेष रूप से की मदद से होना चाहिए कुछ अंकगणित

ठीक है, वह दिया लोग अब उपयोगकर्ता परिभाषित कार्यों के साथ उत्तर पोस्ट कर रहे हैं , यहाँ जवाब है

f(n) = (n-1)n/2

अद्यतन करें : उन लोगों के लिए जो यह नहीं देख सकते हैं कि सूत्र किसी अन्य पंक्तियों की जानकारी का उपयोग नहीं करता है (नीचे स्टेन आर की टिप्पणी देखें), मैंने आदेश को थोड़ा छोटा कर दिया:

 0  =(A1-1)*A1/2    0
 9  =(A2-1)*A2/2    36
 2  =(A3-1)*A3/2    1
 4  =(A4-1)*A4/2    6
 6  =(A5-1)*A5/2    15
 5  =(A6-1)*A6/2    10
10  =(A7-1)*A7/2    45
 8  =(A8-1)*A8/2    28
 3  =(A9-1)*A9/2    3
 7  =(A10-1)*A10/2  21
 1  =(A11-1)*A11/2  0
...

संभवतः च अधिक जटिल पुनरावर्ती कार्य के लिए सिर्फ एक स्टैंड है
Scott Weinstein

@Scott Weinstein सवाल ही सवाल है। यदि यह प्रश्न का उत्तर देने के लिए अस्वीकृत किया जा रहा है क्योंकि यह पोस्ट किया गया था, तो यह हो।
Sinan Ünür

यह मान लेना कि स्तंभ A अनुक्रमिक होने जा रहा है तो आपका उदाहरण काम करता है।
Stan R.

स्कॉट, सवाल यह है कि बिल्कुल नहीं है। यदि प्रश्न का अर्थ है, "मैं एक्सेल में एक सामान्य पुनरावर्ती कार्य कैसे कर सकता हूं?" से, ठीक है, कि सवाल क्या कहना चाहिए। सिनान के (पूरी तरह से सही) उत्तर का कम स्नार्की संस्करण है: f (n + 1) = (n ^ 2 + +) / 2
WCWedin

अच्छे अंक, शायद मेरी ओर से कम अनुमान ...
Scott Weinstein

7

क्या आपको इसे पुनरावर्ती रूप से हल करने की आवश्यकता है? यह निश्चित रूप से इसे हल करने का सबसे अच्छा तरीका नहीं है:

अंक 1 से 10 तक

   1 + 2 + 3 + 4 + 5
+ 10 + 9 + 8 + 7 + 6
  --  --  --  --  --
  11 +11 +11 +11 +11 = 55

या, जैसा कि यह संक्षेप में है, (n+1)(n/2) - n = 10 के साथ, यह स्पष्ट रूप से है 11 x 5


1
रवींद्र! गॉस के बारे में भूल गए ...
Greg

मुझे यह इंगित करना चाहिए कि मैं वास्तव में (n + 1) के लिए हल कर रहा हूं क्योंकि यह प्रश्न में वर्णित है, लेकिन इस समस्या की सामान्य अभिव्यक्ति एक संख्या के लिए है, सम्मिलित

3

पुनरावर्तन को समाप्त करने के लिए फ़ंक्शन को पुनर्स्थापित किया जा सकता है।

आइए यहां कुछ उदाहरण लेते हैं ...

f(4)=1+2+3=6
f(5)=1+2+3+4=10
f(6)=1+2+3+4+5=15

यहाँ एक पैटर्न है:

f(4)=1+2+3=6=4*1.5
f(5)=1+2+3+4=10=5*2
f(6)=1+2+3+4+5=15=6*2.5

जिसका अर्थ है कि हम फ़ंक्शन को सामान्यीकृत कर सकते हैं f(n)=1+2+...+n=n*(n-1)/2 n & gt; 1 और के लिए f(n)=0 अन्यथा।

परिणामस्वरूप एक्सेल फॉर्मूला तब लिखा जा सकता है =IF(A5>1;A5*(A5-1)/2);0)मानकर A5 में n है।

जाहिर है, यदि आपका फॉर्मूला आपके द्वारा दिए गए से अधिक जटिल है, तो यह काफी कठिन हो सकता है, और यह बहुत तेज और आसान हो सकता है कि स्कॉट द्वारा सुझाए गए एक जैसे उपयोगकर्ता परिभाषित फ़ंक्शन को लिखें और फिर उसका उपयोग करें।


2

यह सुनिश्चित नहीं है कि इसे शुद्ध सूत्रों के साथ कैसे किया जाए। एक विकल्प एक यूडीएफ है

Public Function f(n As Integer) As Integer
    If (n = 0) Then
        f = 0
        Exit Function
    End If

    If (n > 0) Then
        f = f(n - 1) + (n - 1)
    End If
End Function

और फिर सूत्र सिर्फ है =f(A1)


मुझे कोड के साथ हरा: पी
Stan R.

2

एक्सेल में कुछ ऐरे फॉर्मूले होते हैं, जो फ़ंक्शन को मानों का एक सेट वापस करने की अनुमति देता है। आप उनके बारे में अधिक पढ़ सकते हैं यहाँ । ये कुछ रचनात्मकता के साथ, पुनरावर्ती एल्गोरिदम के एनालॉग्स को प्रभावी ढंग से लिखने देंगे। उपयोग करने में सरणी सूत्र दर्ज किए जाने चाहिए Shift-Ctrl-दर्ज करें

अपने प्रश्न का उत्तर देने के लिए, एक अरै फंक्शन रिटर्न है 1 के माध्यम से n-1 , और इसे एक राशि में लपेटो। यहाँ, अप्रत्यक्ष एक संदर्भ बनाता है, और ए 1 रखती है n :

=SUM( ROW( INDIRECT("1:"&A1-1) ) )

0

यदि आप सही ढंग से समझते हैं तो आप एक पुनरावर्ती कार्य बनाने की कोशिश कर रहे हैं और एक्सेल में परिपत्र संदर्भों की अनुमति नहीं है। आपकी सबसे अच्छी शर्त यह है कि आप अपनी खुद की वर्कशीट फंक्शन बनाएं।

VB में सम्मिलित करने के लिए Alt + F11 दबाएँ फिर & gt; मॉड्यूल इसके बाद फॉलो करें स्कॉट जवाब।


0

आमतौर पर जिस तरह से यह किया जाता है वह आपके अपने कार्यों को परिभाषित करने के लिए होता है। VBA संपादक में, अपनी कार्यपुस्तिका में एक नया मॉड्यूल डालें और निम्नलिखित फ़ंक्शन में पेस्ट करें:

Function f(n As Integer)
    If n <= 0 Then
        f = 0
    Else
        f = f(n - 1) + (n - 1)
    End If
End Function

अब आप इसे सीधे कॉल कर सकते हैं:

=f(A2)

0
=IF(MOD(A1,2)=0,(A1-1)*ROUND(A1/2,0), (A1) * ((A1-1)/2))

मुझे नहीं पता, अगर तुम वही देख रहे हो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.