我有一个问题,我需要做一个递归函数来获取整数并做一个正方形的星形图案,例如如果我在函数中插入4,它将给我:
from PyQt5 import QtCore, QtGui, QtWidgets
import View
from PyQt5 import QtWidgets
import sys
#class Main(QtWidgets.QMainWindow, View.Ui_Form):
class Main(QtWidgets.QWidget, View.Ui_Form):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.setupUi(self)
#FAZENDO LOGIN FICAR FIXO
self.login_Checkbox.setChecked(True)
self.login_Checkbox.stateChanged.connect(self.loginAlwaysChecked)
# funcionando apenas um dos dois
self.dahua_Checkbox.stateChanged.connect(self.DahuaChangeCheckBox)
self.jufeng_Checkbox.stateChanged.connect(self.changeJFCheckBox)
self.cam_Checkbox.stateChanged.connect(self.changeCamCheckBox)
self.nvr_Checkbox.stateChanged.connect(self.changeNVRCheckBox)
# botao de iniciar test inicia teste
self.stop_flag = False
if self.stop_flag == False:
self.startTest_Btn.clicked.connect(self.threadRun)
def loginAlwaysChecked(self):
print("def loginAlwaysChecked(self):")
def DahuaChangeCheckBox(self):
print("def DahuaChangeCheckBox(self):")
def changeJFCheckBox(self):
print("def changeJFCheckBox(self):")
def changeCamCheckBox(self):
print("def changeCamCheckBox(self):")
def changeNVRCheckBox(self):
print("def changeCamCheckBox(self):")
def threadRun(self):
print("def threadRun(self):")
def main():
app = QtWidgets.QApplication(sys.argv)
form = Main()
form.show()
app.exec_()
if __name__ == '__main__':
main()
因此,我进行了递归操作,我想将我的想法缩小为一个函数,您可以建议改善我的设计,谢谢。
****
****
****
****
答案 0 :(得分:3)
您可以取消SetCount
方法和第二个if
检查,这样也可以:
static int count = 0;
public static void rect(int num) {
if (count <= 0)
return;
for (int i = 0; i < num; i++) {
System.out.print('*');
}
System.out.println();
count--;
rect(num);
}
public static void main(String[] args) {
count = 4;
rect(count);
}
答案 1 :(得分:1)
import java.util.*;
import java.lang.*;
import java.io.*;
class Check{
static void rect(int num,int count){
if(count<=0)
return;
if(count !=0 && num>0){
for(int i =0; i<num;i++){
System.out.print('*');
}
System.out.println();
count--;
rect(num,count);
}
}
public static void main(String[] args) {
int i = 6;
rect(i,i);
}
}
代替使用类变量计数并一次又一次地设置它。对递归函数使用两个参数。 “ num”用于在单行中打印num次星,“ count”用于跟踪行数。
答案 2 :(得分:1)
一个参数,即正方形的大小。没有外部变量:
<Highlighter
highlightStyle={{ backgroundColor: "yellow" }}
searchWords={["and", "or", "the"]}
textToHighlight="The dog is chasing the cat. Or perhaps they re just playing?"
onPressNormalText={() => console.log("normal text is clickeddd!")}
onPressHighlightedText={() => console.log("highlighted text is clickked!")
/>
您的解决方案以及到目前为止提供的其他解决方案,都在正方形的行上递归,在列上都是迭代的。这种解决方案可以解决这一问题-它在列上是递归的,在行上是迭代的。
输出
class Homework {
public static void square(int side) {
if (side > 0) {
for (int i = 0; i < side; i++) {
square(-side);
}
} else if (side < 0) {
System.out.print('*');
square(side + 1);
} else {
System.out.println();
}
}
public static void main(String[] args) {
square(5);
}
}