【发布时间】:2015-09-07 14:16:43
【问题描述】:
我们被要求做一个三角形编号。 c++ 中的模式与 min。循环。三角形图案如下:
____1_____
___2__3____
__4__5__6__
7__8__9__10
我的代码:
#include <iostream>
using namespace std;
int main() {
int n=0, r=0, i=0;
cout << "No. of rows: ";
cin >> r;
for( n=1; n<=r; n++) {
for( i=1; i<=r-n; i++) {
cout << " ";
}
for( i=(n*(n-1)/2)+1; i<=(n*(n+1)/2); i++ ) {
if( i<10 )
cout << " " << i << " ";
else
cout << i << " ";
}
cout << "\n";
}
return 0;
}
输出
问题
1) 使用模式生成公式是否明智?例如,为了将 i 的值放在最后一个循环中,我使用模式 1,2,4,7 .. 的公式作为 (n*(n-1)/2) +1。这种方式效率更高吗?什么是迭代方法?什么是可能的递归?
2) 是否可以减少数量。循环?减少变量还是减少循环更好?
谢谢!
【问题讨论】:
-
" 减少变量还是减少循环更好?"配置文件并查看
-
@ChrisBeck 我们如何分析?
-
@TimKrul,当然是使用分析器!例如,您可以使用 gprof。
-
您可以通过对空格使用
std::string类来减少循环。查一下(特别是如何创建一串重复字符)。