c# - 替换循环
问题描述
我正在尝试用 c 语言编写一个程序,没有任何决策语句循环,但我不知道如何摆脱 for 循环语句。
public int score()
{
int scor = 0;
int i=0;
int type;
for(int frameIndex=0; frameIndex < 10; frameIndex++)
{
type=Convert.ToInt32(isStrike(i));
scor+=getStrikeCalculation(i)*type;
i+=1*type;
type=Convert.ToInt32(isSpare(i));
scor+=getSpareCalculation(i)*type;
i+=2*type;
type=Convert.ToInt32(isNormal(i));
scor += getNormalCalculation(i)*type;
i+=2*type;
}
return scor;
}
private bool isNormal(int i)
{
return rolls[i]+rolls[i+1]!=10 && rolls[i]!=10;
}
private bool isSpare(int i){
return rolls[i] + rolls[i+1] == 10;
}
private bool isStrike(int i){
return rolls[i] == 10;
}
private int getStrikeCalculation(int i){
return rolls[i]+ rolls[i+1] + rolls[i+2];
}
private int getNormalCalculation(int i){
return rolls[i]+rolls[i+1];
}
private int getSpareCalculation(int i){
return rolls[i] + rolls[i + 1] + rolls[i + 2];
}
我试图让分数递归,但它没有用,递归我不知道如何停止函数,因为我不能使用 if 语句。
解决方案
你的循环只是做了十次。如果你不想循环,只需做十次:
int scor = 0;
int i=0;
int type;
int frameIndex=0;
type=Convert.ToInt32(isStrike(i));
scor+=getStrikeCalculation(i)*type;
i+=1*type;
type=Convert.ToInt32(isSpare(i));
scor+=getSpareCalculation(i)*type;
i+=2*type;
type=Convert.ToInt32(isNormal(i));
scor += getNormalCalculation(i)*type;
i+=2*type;
frameIndex += 1;
type=Convert.ToInt32(isStrike(i));
scor+=getStrikeCalculation(i)*type;
i+=1*type;
type=Convert.ToInt32(isSpare(i));
scor+=getSpareCalculation(i)*type;
i+=2*type;
type=Convert.ToInt32(isNormal(i));
scor += getNormalCalculation(i)*type;
i+=2*type;
frameIndex += 1;
type=Convert.ToInt32(isStrike(i));
scor+=getStrikeCalculation(i)*type;
i+=1*type;
type=Convert.ToInt32(isSpare(i));
scor+=getSpareCalculation(i)*type;
i+=2*type;
type=Convert.ToInt32(isNormal(i));
scor += getNormalCalculation(i)*type;
i+=2*type;
frameIndex += 1;
... and so on, seven more times.
你到底为什么要这样做,我无法理解;循环的目的是避免将代码写出十次。你为什么要做这种奇怪的事情?只写一个循环。
推荐阅读
- mysql - SQL - 如何从 Mysql 中的另一个表插入附加到 Id 的新行
- python - How to use Python requests to fill out a date option as well as download from a radiobutton
- java - Play Framework 中的咖啡因缓存不返回缓存的响应
- python - 如何在 Tortoise-ORM 中使用 Postgresql 数组字段
- python - 我想在 Python 中返回文件名。我怎样才能正确地做到这一点?
- angular - 将 Angular 应用程序部署到服务器
- css - 如何在 vue.js 中使用 @page css 规则
- python - 如何绘制直方图以获取所有唯一值的计数?
- flutter - 颤动动画数字,旋转
- sql - Postgres函数将表返回到变量中