30/09/2018, 16:07
Vòng lặp while hoạt động như thế nào?
#include <stdio.h>
long fact(int n);
long rfact(int n);
int main(void)
{
int num;
printf("This program calculates factorials.
");
printf("Enter a value in the range 0-12 (q to quit):
");
while (scanf("%d", &num) == 1)
{
if (num < 0)
printf("No negative numbers, please.
");
else if (num > 12)
printf("Keep input under 13.
");
else
{
printf("loop: %d factorial = %ld
",
num, fact(num));
printf("recursion: %d factorial = %ld
",
num, rfact(num));
}
printf("Enter a value in the range 0-12 (q to quit):
");
}
printf("Bye.
");
return 0;
}
long fact(int n) // loop-based function
{
long ans;
for (ans = 1; n > 1; n--)
ans *= n;
return ans;
}
long rfact(int n) // recursive version
{
long ans;
if (n > 0)
ans= n * rfact(n-1);
else
ans = 1;
return ans;
}
Code trên dùng để tính giai thừa của một số nguyên,bằng hai cách:sử dụng vòng lặp for và đệ quy.Nhưng mình có 2 điểm thắc mắc.
1.Ở câu lệnh:
while (scanf("%d", &num) == 1)
cụ thể: scanf("%d",&num)==1
,cái này có ý nghĩa như thế nào vậy mọi người?
2. Nguyên nhân nào làm cho code này có thể lặp lại việc tính giai thừa của nhiều số.(mình nói có vẻ khó hiểu,nếu đúng vậy thì cứ chạy thử code các bạn sẽ hiểu ý mình muốn nói).
Thank you mọi người đã đọc topic này.
Bài liên quan
Cái này là điều kiện của vòng while bạn ạ. Nếu số nhập vào ==1. Kiểu như là bạn đã nhập được đúng số kiểu int vào ý. Sẽ chạy các câu bên trong while
Mình không dùng laptop nên chẳng chạy code được, nguyên nhân là nó dùng vòng lặp + đệ qui bạn ạ :)))). Cứ có việc thì làm thôi.