如何用Java递归实现受参数控制的指定+号图案打印?
递归图案打印实现思路与代码
核心规律拆解
观察给出的输出样例可以直接总结出递归结构:
- 边界条件:当输入
n=1时,仅输出1行内容:+ - 递推关系:任意
n>1的输出都由三部分拼接而成:- 先完整输出
n-1对应的图案 - 输出1行包含
n个+的内容 - 再完整输出一次
n-1对应的图案
- 先完整输出
代码实现
public class RecursivePattern { // 辅助方法:打印k个加号后换行 private static void printPluses(int k) { for (int i = 0; i < k; i++) { System.out.print("+"); } System.out.println(); } public static void pattern(int n) { // 边界条件 if (n == 1) { printPluses(1); return; } // 先打印n-1的图案 pattern(n-1); // 打印当前n对应的加号行 printPluses(n); // 再打印一次n-1的图案 pattern(n-1); } public static void main(String[] args) { // 测试样例 pattern(4); } }
验证说明
- 调用
pattern(2):先输出pattern(1)的1行+,再输出++,再输出pattern(1)的1行+,完全匹配给出的样例 - 调用
pattern(3):先输出pattern(2)的3行内容,再输出+++,再输出pattern(2)的3行内容,和样例完全一致 - 以此类推,任意大于0的整数n都可以适配,不需要额外的模运算或者分支判断。
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

