今天我的问题是关于析因,因为我对此感到非常困惑。我了解cin和for循环,还有cout和其他内容,但是,在乘以过去的值时,我非常困惑,我的意思是:例如阶乘5! = 1 * 2 * 3 * 4 * 5,我不了解代码如何存储过去的值并相乘,例如,1个第一,1 * 2 = 2个第二,1 * 2 * 3 = 6个第三等等。有人可以向我解释一下。谢谢。
使用命名空间标准;
int main () {
int sayi;
cout<< "sayi: ";
cin>> sayi;
// 5! = 5*4*3*2*1 faktoryaller
int faktoriyel = 1;
for(int i = 1; i <= sayi; i++){
faktoriyel = faktoriyel * i;
cout<<faktoriyel<<endl;
}
cout<<"Faktoriyel: "<<faktoriyel<<endl;
int gir; {
cout<<"sayi giriniz: ";
cin>> gir;
int faktoriyel = 1;
for(int i = 1; i <= gir; i++) {
faktoriyel = faktoriyel * gir;
cout<<faktoriyel<<endl;
}
cout<<"Faktoriyel: "<< faktoriyel <<endl;
}
return 0;
}
如果i
设置为5,则此循环中的代码将被执行5次:
for(int i = 1; i <= gir; i++) {
faktoriyel = faktoriyel * gir;
cout<<faktoriyel<<endl;
}
第一次执行faktoriyel = faktoriyel * gir;
,faktoriyel
和i
将为1,因此,您可以看到以下行:
faktoriyel = 1 * 1;
因此,faktoriyel
保持为1。第二次执行该行时,您可以按以下方式读取它,因为现在i
为2:
faktoriyel = 1 * 2;
因此,faktoriyel
变为2。因此,作为最后一个示例,第三次回合,该行与:(因为faktoriyel
现在为2,i
为3)]
faktoriyel = 2 * 3;
[有数学背景的人感到困惑的是=
是赋值运算符。确实会更改左侧的值。它没有说明数学相等性。同样,变量具有状态并随时间变化。 (首先)要从这种范式转换为您在形式证明中看到的通常的数学范式并不容易。