go语言求数的阶乘并输出
时间: 2024-04-29 12:23:46 浏览: 51
```go
package main
import "fmt"
func factorial(n int) int {
if n == 0 {
return 1
} else {
return n * factorial(n-1)
}
}
func main() {
n := 5
fmt.Printf("%d! = %d\n", n, factorial(n))
}
```
输出:
```
5! = 120
```
相关问题
用汇编语言求n的阶乘,输出为十进制数
以下是用x86汇编语言实现计算n的阶乘的代码,可以在MASM汇编器中运行:
```
.model small
.stack 100h
.data
n dw ?
fact dw ?
msg1 db "Enter a number: $"
msg2 db "The factorial is: $"
.code
main proc
mov ax, @data
mov ds, ax
; 输出提示信息
mov ah, 09h
lea dx, msg1
int 21h
; 读取输入的数字n
mov ah, 01h
int 21h
sub al, 30h
mov n, ax
; 计算阶乘
mov ax, 1
mov bx, 1
loop1:
cmp bx, n
jg done
add ax, ax
mul bx
inc bx
jmp loop1
done:
mov fact, ax
; 输出结果
mov ah, 09h
lea dx, msg2
int 21h
mov ax, fact
call print_num
mov ah, 4Ch
int 21h
main endp
; 输出数字
print_num proc
push ax
push bx
push cx
push dx
mov bx, 10
mov cx, 0
loop2:
xor dx, dx
div bx
push dx
inc cx
cmp ax, 0
jnz loop2
print_loop:
pop dx
add dl, 30h
mov ah, 02h
int 21h
loop print_loop
pop dx
pop cx
pop bx
pop ax
ret
print_num endp
end main
```
该程序首先从用户输入一个数n,然后使用循环计算出n的阶乘,最后输出结果。需要注意的是,由于计算过程中可能产生很大的数,因此我们使用了16位寄存器来保存结果。
汇编语言求n阶乘代码
下面是一个使用x86汇编语言实现计算n的阶乘的代码示例:
```
section .data
msg db "Enter a number: ", 0
msg2 db "Factorial of the number is: ", 0
section .bss
n resb 1
section .text
global _start
_start:
; 输出提示信息
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, 16
int 0x80
; 输入n
mov eax, 3
mov ebx, 0
mov ecx, n
mov edx, 1
int 0x80
; 计算n的阶乘
mov eax, 1
mov ebx, 0
movzx ecx, byte [n]
loop_start:
cmp ecx, 0
je loop_end
imul eax, ecx
dec ecx
jmp loop_start
loop_end:
; 输出结果
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, 25
int 0x80
; 输出结果
mov eax, 4
mov ebx, 1
mov ecx, eax
mov edx, 1
add ecx, eax
mov byte [ecx], al
mov eax, 4
mov ebx, 1
mov ecx, eax
add ecx, 1
mov edx, 2
int 0x80
; 退出程序
mov eax, 1
xor ebx, ebx
int 0x80
```
这个程序首先提示用户输入一个整数,然后计算该整数的阶乘,最后输出结果并退出程序。
阅读全文