From b4c4f41f44196b220937e2c913f9d1fc0305012f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gytis=20Repe=C4=8Dka?= Date: Tue, 9 Oct 2018 20:16:16 +0300 Subject: [PATCH] Added recursive-function.go initial version. --- recursive-function.go | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 recursive-function.go diff --git a/recursive-function.go b/recursive-function.go new file mode 100644 index 0000000..8fce307 --- /dev/null +++ b/recursive-function.go @@ -0,0 +1,49 @@ +// Copyright 2018 Gytis Repečka. All rights reserved. +// Use of this source code is governed by a GNU GPL +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "bufio" + "os" + "strings" + "strconv" +) + +func factorial(n int) int { + if n == 0 { + return 1 + } + return n*factorial(n-1) +} + +func main() { + reader := bufio.NewReader(os.Stdin) + fmt.Print("Input number (and press ENTER): ") + inputString, _ := reader.ReadString('\n') + + // Convert CRLF to LF + // Windows + // inputString = strings.Replace(inputString, "\r\n", "", -1) + // Unix + inputString = strings.Replace(inputString, "\n", "", -1) + + // Convert string (inputString) to integer (inputInt) + var inputInt int + inputInt, err := strconv.Atoi(inputString) + + // If there was error converting string to int + if err != nil { + fmt.Println(err) + } + + fmt.Printf("Value (string): %s\n", inputString) + fmt.Printf("Value length: %d\n", len(inputString)) + fmt.Printf("Value (int): %d\n", inputInt) + fmt.Println("\n---------------") + + fmt.Printf("Factorial of %d is: %d", inputInt, factorial(inputInt)) + fmt.Println("\n---------------\n") +}