Ruby嵌套do ... while循环示例

嵌套do ... while循环

当两个测试后循环(即do..while循环)一起工作以完成任务时,这称为do ... while循环嵌套。它意味着有两个do-while循环,第一个循环充当外部循环,而第二个循环充当内部循环。两个循环的执行都将以以下方式进行:首先,指针将与外部循环一起使用,然后在执行完块后检查条件时,它将移至内部循环。再次在该块内部执行,然后将检查条件,然后指针将移至外部循环以检查外部循环的指定布尔条件。在此循环中,这两个块将至少执行一次,因为do-while是退出控制循环。

在Ruby中,可以在以下语法的帮助下完成do ... while循环的嵌套

    loop do
        # 代码块
        loop do
            # 代码块
            break if Condition
        end
        break if Condition
    end

范例1:

=begin 
Ruby program to check the number of Armstrong numbers 
present between two limits using a nested do-while loop
=end

puts "Enter upper limit:-"
ul=gets.chomp.to_i
puts "Enter lower limit:-"
ll=gets.chomp.to_i

loop do
	num=ul
	temp=ul
	arm=0
	loop do
		rem=num%10
		num=num/10
		arm=arm+rem*rem*rem
		if num==0
			break
		end
	end
	if temp==arm
		puts "#{temp} is armstrong"
	end
	ul=ul-1
	if ul==ll
		break
	end
end

输出结果

Enter upper limit:-
1000
Enter lower limit:-
100
407 is armstrong
371 is armstrong
370 is armstrong
153 is armstrong

范例2:

=begin 
Ruby program to check the number of numbers present 
between two limits using a nested do-while loop
=end

puts "Enter upper limit:-"
ul=gets.chomp.to_i
puts "Enter lower limit:-"
ll=gets.chomp.to_i

loop do
	num=ul
	temp=ul
	pal=0
	loop do
		rem=num%10
		num=num/10
		pal=pal*10+rem
		if num==0
			break
		end
	end
	if temp==pal
		puts "#{temp} is palindrome"
	end
	ul=ul-1
	if ul==ll
		break
	end
end

输出结果

Enter upper limit:-
200
Enter lower limit:-
100
191 is palindrome
181 is palindrome
171 is palindrome
161 is palindrome
151 is palindrome
141 is palindrome
131 is palindrome
121 is palindrome
111 is palindrome
101 is palindrome

在上面的示例中,您可以观察到两个do-while循环协同工作,以找到两个范围或界限之间的回文和Armstrong级数。外部do-while循环正在将上限降低一,以便该循环可以在这两个指定数字之间起作用。内循环正在处理每个数字,以检查它是否是回文/阿姆斯特朗。