Grüße gute Leute von Stackland!Wie kann ich diese Fibonacci-Sequenzbewertung in R abschließen?
Vor kurzem wurde ich diese Aufgabe
- die Fibonacci-Folge in jeder Sprache
- auswerten generieren gegeben, ob jeder Wert gerade oder ungerade ist
- Summe der geraden Zahlen, so dass ihr Gesamt nicht> 500.000 ist
Ich entschied mich, dies zu tun R, wie ich die Sprache lerne und dachte, es wäre eine gute Übung dabei.
Ich habe es geschafft, Schritt 2 der Aufgabe abzuschließen, konnte aber nicht weiter verfahren. Bitte beachten Sie Code und Kommentare unten.
len <- 50
fibvals <- numeric(len)
fibvals[1] <- 1
fibvals[2] <- 1
for(i in 3:len) { fibvals[i] <- fibvals[i-1]+fibvals[i-2]}
fibvals
[1] 1 1 2 3 5
[6] 8 13 21 34 55
[11] 89 144 233 377 610
[16] 987 1597 2584 4181 6765
[21] 10946 17711 28657 46368 75025
[26] 121393 196418 317811 514229 832040
[31] 1346269 2178309 3524578 5702887 9227465
[36] 14930352 24157817 39088169 63245986 102334155
[41] 165580141 267914296 433494437 701408733 1134903170
[46] 1836311903 2971215073 4807526976 7778742049 12586269025
# Creates a variable called len in which the value 50 is stored
# Creates a var called fibvals, which is a numeric datatype, which should have len (50) vals
# Sets the value of the first entry in fibvals to 1
# Sets the value of the second entry in fibvals to 1
# Loop - "for (i in 3:len)" dictates that the loop should be executed between step 3 and step 50 (denoted by "len")
# Loop - Defines a loop step "i" as being the result of the (current i - the before it) + (current i - i two before it)
# Loop - Example 5 = (5-3) + (5-2) OR 2 + 3 = 5 | Example 21 = (21-13) + (21-8) OR 8 + 13 = 21
is.even <- function(x){ x %% 2 == 0 }
# Creates a UDF to check if values are odd or even by using modulo.
If the remainder is 0 when any value is divided by 2, it is an even number
is.even(fibvals)
[1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
[11] FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
[21] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE
[31] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
[41] FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
# Evaluates all Fibonacci values on odd or even property
Was ich brauche, ist ein bisschen Anleitung, wohin ich von hier aus gehen sollte. Soll ich eine data.table erstellen und diese mit dem SQL-Paket abfragen, oder gibt es eine elegantere und weniger umständliche Methode?
Vielen Dank im Voraus!
In Schritt 3 tun Sie meinen, dass Sie alle Kombinationen von selbst 'fibvals'as solange die Summe der Kombination finden werden ist kleiner als 500000? – Psidom
@Psidom - Entschuldigung, wenn das unklar war. Ziel ist hier, NUR die geraden Fibeln zu summieren, wobei die Summe 500.000 nicht übersteigt. Ist das klarer? – jimiclapton
Aber es gibt noch viele Möglichkeiten, zum Beispiel '2, 4, 6, 8, 10' und die Schwelle ist' 10', sollte ich '2 + 4' oder' 2 + 6' summieren? Sie können nicht alle '2,4,6' in Ihre Sequenz aufnehmen, da ihre Summe '12' ist. – Psidom