Đây là nền cho câu hỏi này:Một đệ quy liên quan đến vấn đề trong C#
nền Đi bất kỳ số nguyên n lớn hơn 1 và áp dụng các thuật toán sau
Nếu n là số lẻ thì n = n × 3 + 1 khác n = n/2
Nếu n bằng 1 thì dừng lại, nếu không đi đến bước 1
Sau đây cho thấy những gì xảy ra khi sử dụng một n bắt đầu từ 6
6 - 3 - 10-5 - 16 - 8 - 4 - 2 - 1
Sau 8 thế hệ của thuật toán chúng tôi nhận tới 1. Người ta phỏng đoán rằng đối với mỗi số lớn hơn 1 ứng dụng lặp lại của thuật toán này sẽ cuối cùng nhận được 1.
Câu hỏi đặt ra là làm thế nào tôi có thể tìm được 500 số thế hệ để giảm xuống 1?
Mã bên dưới là phiên bản của tôi nhưng dường như có một số logic sai. Bạn có thể giúp tôi sửa lỗi này không? Cảm ơn trước.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sequence1
{
class Program
{
static void Main(string[] args)
{
int start = 1;
int flag = 0;
int value;
while(true){
int temp = (start - 1)/3;
string sta = temp.ToString();
if (Int32.TryParse(sta, out value))
{
if (((start - 1)/3) % 2 == 1)
{
start = (start - 1)/3;
flag++;
if (flag == 500)
{
break;
}
}
else
{
start = start * 2;
flag++;
if (flag == 500)
{
break;
}
}
}
else
{
start = start * 2;
flag++;
if (flag == 500)
{
break;
}
}
}
Console.WriteLine("result is {0}", start);
Console.ReadLine();
}
}
}
Một 'int' có tên là 'cờ'? 'ToString' theo sau là' TryParse'? Xin lỗi, nhưng mã này không thể đọc được. – Henrik
Đây là câu hỏi "không hoạt động" mà không có chi tiết. Điều gì xảy ra, lỗi là gì? –
Bạn đã đề cập đến các cuộc khảo sát, nhưng tôi chỉ thấy các vòng lặp. – Nolonar