2016-04-13 37 views
-1

Uyarı artırma ederken: Tam bir acemi değilim. İleride çok çaylak hataları. Kullanılan dil İşleme (Java).Kötü matematik (ve kod) değerleri

Numaraları art arda eklemek için işlevler kullanıyorum (örneğin 1 + 2 + 3 + 4 + 5 + 6 vb.) 10'a kadar kullanıyorum. Float "num", bunun ne kadar yüksek olması gerektiğini gösterir. 10.

Sonraki artımlı bir şekilde, bir faktöriyel hesaplama ediyorum (1 * 2 * 3 * 4 * 5 * 6 ve benzeri) kadar

10. My öğretmen için sınıfta örnek verdi

float Addition(float num) { 
float val1=1; 
float val=0; 
while (val1 <=num){ 
val=val+val1; 
val1++; 
    } 
return val; 
    } 

Bu t ekler: benziyor ki, arka arkaya sayılar ekleyerek o 55, gerektiği gibi, biz 10'a varana kadar arttırıyoruz. Birisi benim için bunun konseptini açıklayabilir mi? Şimdi biraz üzerinde çalışıyorum, 4'e kadar artışlar ekler (yani 0 + 4 + 8 + 12 + 16 + 20 ve benzeri) 10'a kadar, ama matematikim YOL kapalıdır; o 180 eşit, ancak bunun yerine 45 eşit olmalıdır: Kimsenin benim için matematik düzeltmek aramıyorum ama kavramını kendisi açıklamak ve mantıklı eğer düzgün (bu hesaplamak nasıl

float Addition2(float num) { 
float val1=1; 
float val=1; 
while (val1 <=num){ 
val=val*val1; 
val1=val1+val2+4; 
    } 
return val; 
    } 

).

Şimdiden teşekkürler.

P.S. Prim olarak

, burada da yine yanlış faktöriyele benim eseridir. bir kişinin de bu kavramı açıklayabilir, bu çökertilmesi olacaktır:

float Multiplication1(float num) { 
float val1=1; 
float val=1; 
while (val1 <=num){ 
val=val*val1; 
val1=val1+2; 
    } 
return val; 
    } 
+0

o döngüler için kullanmak daha iyidir. Ve hangi dili kullanıyorsunuz? Ve neden birbiriyle neredeyse aynı olan 2 kod parçasına sahipsin? –

cevap

1

, kodu anlamak satır satır almaya çalışmak. Anlamak için yorum eklemek faydalı olabilir. Ayrıca daha uzun ve daha açıklayıcı değişken adlarının kullanılmasına yardımcı olabilir. en çalışır fonksiyonu ile deneyelim:

//this function adds up 1+2+...maxNumberToAdd 
float addition(float maxNumberToAdd) { 

    //start at 1 
    float currentNumberToAdd = 1; 

    //keep track of your total sum 
    float totalSoFar = 0; 

    //loop 1,2,3...maxNumberToAdd 
    while (currentNumberToAdd <= maxNumberToAdd){ 

     //add the current number to the total 
     totalSoFar = totalSoFar + currentNumberToAdd; 

     //go to the next number to add 
     currentNumberToAdd++; 
    } 

    //return the total 
    return totalSoFar; 
} 

Şimdi, bir sonraki görevi yapması gerektiğini değiştirerek düşünmek anlamına sahip olduğunu.

Sen 0 yerine 1 başlamak istiyorsunuz. 1'dan başlamak için sorumlu kod satırını bulun. Başka bir şeye değiştirirseniz ne olur?

Sen sadece her 4 numara eklemek istediğinizi varsayalım. Bir sonraki numaraya gitmek için sorumlu kod satırını bulun. 1'dan başka bir şeyle artırırsanız ne olur?

+0

Merhaba, yardım için çok teşekkür ederim. Yani curentNumberToAdd değişkenini 4 olarak değiştirdim. Bu, 0 + 4 = 4, sonra 4 + 8 = 12, sonra 12 + 4 = 16 ... vb. Amacım 0 + 4 + 8 + 12 + 16 ... vb eklemek, ama ben 0 + 4 + 4 + 4 + 4 ... ekliyorum gibi görünüyor – AndrewK

+0

@AndrewK Neden cahgne 'currentNumberToAdd yaptın 4'e mi? 'CurrentNumberToAdd', eklenecek geçerli sayıyı iyi tutuyor. 4'e eşit değil, 4'e eşittir. –