Home > Enterprise >  I have a problem that does not generate the correct sequence?
I have a problem that does not generate the correct sequence?

Time:12-22

An analyst observed that the upward movement of stocks on Bovespa is repeated according to a mathematical sequence. He wants to find out what the next bullish sequences will be. Generate and save in Excel cells using macro the sequence 1, 3, 4, 7, 11, 18, 29, ... up to its twentieth term?

following my code in vba:

Sub GerarSequencia()
    Dim num As Long 
    Dim previous As Long 
    Dim i As Integer 

   
    num = 0
  previous = 0

   
    For i = 1 To 20
       
        If i = 1 Then
            num = 1
        
        Else
            num = num   previous
        End If


        Cells(i, 1).Value = num


       previous = num
    Next i
End Sub

I tried to generate the sequence of the exercise but did it generate another one?

CodePudding user response:

The sequence is a sommation of the earlier two values. So 1 3 = 4 and so on. Before you can start the sqequence you have to have two numbers. I think you can work with:

Sub GerarSequencia()
Dim intFirstNum, intSecondNum As Integer
Dim intCounter As Integer

intFirstNum = 1
intSecondNum = 3

Cells(1, 1) = intFirstNum
Cells(2, 1) = intSecondNum

For intCounter = 3 To 20

    Cells(intCounter, 1).Value = Cells(intCounter - 2, 1).Value   Cells(intCounter - 1, 1).Value

Next intCounter
    
End Sub

So you see that I have made two additional variables which are filled with 1 and 3 (if you change them you can start wherever you want). From that point on, I start the loop from position 3. This is because the first two are already known.

From that point on you can run the sequence. You don't need an if statement in that case.

CodePudding user response:

Generating a Sequence

Sub GerarSequencia()
    
    Const nCOUNT As Long = 20
    
    Dim nPrev As Long: nPrev = 1
    Dim nCurr As Long: nCurr = 3
    
    Cells(1, 1).Value = nPrev
    Cells(2, 1).Value = nCurr
    
    Dim nNext As Long
    Dim i As Long

    For i = 3 To nCOUNT
        nNext = nPrev   nCurr ' sum up
        Cells(i, 1).Value = nNext ' write
        nPrev = nCurr ' swap
        nCurr = nNext ' swap
    Next i

'    ' Return the worksheet results in the Immediate window (Ctrl   G).
'    For i = 1 To 20
'        Debug.Print Cells(i, 1).Value
'    Next i

End Sub
  •  Tags:  
  • vba
  • Related