You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在控制台中绘制3n+1问题的折线图?

3n+1问题折线图实现方案

前置逻辑调整

现有代码仅输出迭代数值,需要先将完整迭代序列存储下来,作为折线图的数据源:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        Console.Write("Enter a number: ");
        int n = Convert.ToInt32(Console.ReadLine());
        // 存储完整迭代序列,包含初始输入值
        List<int> collatzSequence = new List<int> { n };
        
        while (n != 1)
        {
            if (n % 2 == 0)
            {
                n /= 2;
            }
            else
            {
                n = 3 * n + 1;
            }
            collatzSequence.Add(n);
            Console.WriteLine(n);
        }
        Console.WriteLine("序列生成完成,总迭代步数:" + (collatzSequence.Count - 1));
        
        // 绘制逻辑可插入在此处
    }
}

方案1:控制台字符折线图(无额外依赖)

不需要引入任何UI库,直接在控制台输出简易折线,适合快速验证效果:

// 插入到上述代码的绘制逻辑位置
int maxVal = collatzSequence.Max();
int stepCount = collatzSequence.Count;

// 从最大值到1逐行打印Y轴和数据点
for (int y = maxVal; y >= 1; y--)
{
    Console.Write($"{y,4} | ");
    for (int x = 0; x < stepCount; x++)
    {
        Console.Write(collatzSequence[x] == y ? "* " : "  ");
    }
    Console.WriteLine();
}
// 打印X轴和刻度
Console.WriteLine("     " + new string('-', stepCount * 2));
Console.Write("Step: ");
for (int x = 0; x < stepCount; x++)
{
    Console.Write($"{x,2}");
}

方案2:WinForm Chart控件实现(交互式桌面可视化)

如果使用.NET Core 3.0以上版本,需要先安装NuGet包System.Windows.Forms.DataVisualization

  • 新建WinForm项目,从工具箱拖拽Chart控件到窗体
  • 在按钮点击/窗体加载事件中加入以下逻辑:
// 先调用逻辑生成collatzSequence序列
chart1.Series.Clear();
var series = chart1.Series.Add("Collatz序列");
series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;

// 绑定序列数据
for (int i = 0; i < collatzSequence.Count; i++)
{
    series.Points.AddXY(i, collatzSequence[i]);
}

// 配置坐标轴样式
chart1.ChartAreas[0].AxisX.Title = "迭代步骤";
chart1.ChartAreas[0].AxisY.Title = "数值";
chart1.ChartAreas[0].AxisY.Minimum = 1;

方案3:导出CSV生成图表(无需写UI代码)

直接把序列导出为CSV文件,用Excel/WPS打开后插入折线图即可,适合需要专业图表输出的场景:

using System.IO;

// 导出逻辑,插入到绘制逻辑位置
string savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "collatz_sequence.csv");
using (StreamWriter sw = new StreamWriter(savePath))
{
    sw.WriteLine("迭代步骤,数值");
    for (int i = 0; i < collatzSequence.Count; i++)
    {
        sw.WriteLine($"{i},{collatzSequence[i]}");
    }
}
Console.WriteLine($"序列已导出到桌面的collatz_sequence.csv,打开后直接插入折线图即可");

内容的提问来源于stack exchange,提问作者Lê Trần Nam Khánh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:45:02