2017-09-24 5 views
0

안녕하세요 저는 golang 프로그래밍 언어를 처음 사용합니다. 팩터 기능에서 bigint 값을 얻을 수 있지만 추가는 함수와 함께 작동하지 않습니다.bigInt number golang의 합계

bigint를 허용하는 추가 기능이 있지만 .Mod 및 .Div 메서드를 추가하려고하면 어떤 이유로 0이 반환됩니다. 추가 함수에있는 else 문은 내가 이 factoral 함수에서 오는 int 값을 가질 때 사용했던 오래된 문입니다.

int 값일 때 완벽하게 작동했습니다. 내가 시도했을 때 bigint 값을 받아들이 기 위해 if 문을 변경하면 전혀 작동하지 않을 수 있습니다. .

.Mod 및 .Div 메서드를 시도했으며 올바른 값인 을 출력하고 있습니다. 하지만.하려고 할 때 그것들을 함께 추가하면 값이 "22", "2"이더라도 항상 을 반환합니다. if else 문을 원래의 int 값으로 되돌려 놓았습니다.

누구든지 나를 도와 줄 수 있다면 매우 유용 할 것입니다.

package main 

import (
    "fmt" 
    "math/big" 
) 

func factoral(n uint64) (r *big.Int) { 

    one, bn := big.NewInt(1), new(big.Int).SetUint64(n) 

    r = big.NewInt(1) 
    if bn.Cmp(one) <= 0 { 
     return 
    } 
    for i := big.NewInt(2); i.Cmp(bn) <= 0; i.Add(i, one) { 
     r.Mul(r, i) 
    } 
    return 
} 

func add(number *big.Int) *big.Int { 
    //this the statement that works with normal int values 
    if number/10 < 10 { 
     return sum + number/10 
    } else { 
     return sum + add(number/10) 
    } 

} 
func main() { 
    fmt.Println(add(factoral(100))) 

} 
+0

여기서 sum은 정의되지 않습니다. 당신은 세계적인 정의를 빠뜨리는 것을 잊었습니까? 또한,'add()'에 대한 인수 인'number '는'* big.Int'이므로'add' 함수의 연산자는 이해할 수 없습니다 (즉,'/','<' ,'+'등등,'* big.Int'와'int' 타입을 위해 정의되지 않았습니다). – PaSTE

답변

0

이 중 하나가

package main 

import (
    "fmt" 
    "math/big" 
) 

func factoral(n uint64) (r *big.Int) { 

    one, bn := big.NewInt(1), new(big.Int).SetUint64(n) 

    r = big.NewInt(1) 
    if bn.Cmp(one) <= 0 { 
     return 
    } 
    for i := big.NewInt(2); i.Cmp(bn) <= 0; i.Add(i, one) { 
     r.Mul(r, i) 
    } 
    return 
} 

func add(number *big.Int) *big.Int { 
    ten := big.NewInt(10) 
    sum := big.NewInt(0) 
    mod := big.NewInt(0) 
    for ten.Cmp(number)<0 { 
     sum.Add(sum, mod.Mod(number,ten)) 
     number.Div(number,ten) 
    } 
    sum.Add(sum,number) 
    return sum 
} 
func main() { 
    fmt.Println(add(factoral(100))) 

} 

문제는 방법과 그 방법을 당신이 값이 할당 된 하나가 될 것입니다 호출 큰 교차점 개체 것 같았다 보인다 고정하고, 반드시 인수.

참조 : https://golang.org/pkg/math/big/#Int.Div

+0

정말 고맙습니다. – user2963022