在循环中用另一个变量的值替换一个变量的值
问题描述:
我想在下面的示例中分别将变量'c'和'd'的值替换为变量'a'和'b',并且此过程应该继续'n'次。在循环中用另一个变量的值替换一个变量的值
#!/usr/bin/perl
my $a = 4;
my $b = 6;
my $c = $a + $b;
my $d = $a * $b;
print "$c\n";
print "$d\n";
$a = $c;
$b = $d;
即为一个循环的每次迭代“c”和“d”的计算值应该是“一”和“b”分别为的新值“N”次,使得新值'c'和'd'将被生成。我无法取代这些值。如何将条件设置为循环'n'次?所期望的输出应为以下形式:
c= val1 val2 val3......valn
d= val1 val2 val3......valn.
答
这应该工作:
#!/usr/bin/env perl
## Don't use $a and $b, they are special variables
## used in sort().
my $foo=4;
my $bar=6;
## The number of iterations
my $n=5;
## These arrays will hold the generated values
my (@sums, @products);
## Use a for loop
for (1 .. $n) {
my $sum=$foo+$bar;
my $product=$foo*$bar;
## save the results in an array to print later
push @sums, $sum;
push @products, $product;
$foo=$sum;
$bar=$product;
}
print "[email protected]\[email protected]\n";
答
$a
的和$b
变量被保留用于通过sort
操作者使用。
这会做你想要
use strict;
use warnings;
my ($aa, $bb) = (4, 6);
my $n = 5;
for (1 .. $n) {
my ($cc, $dd) = ($aa + $bb, $aa * $bb);
print "$cc\n", "$dd\n\n";
($aa, $bb) = ($cc, $dd);
}
输出
10
24
34
240
274
8160
8434
2235840
2244274
18857074560
+1
+1,但请注意,OP似乎希望输出“的格式为:c = val1 val2 val3 ...... valn d = val1 val2 val3 ...... valn。” – terdon 2014-09-26 14:03:05
答
#!/usr/bin/perl
use strict;
use warnings;
use bigint;
my ($sum, $times) = (4, 6);
my $count = 8;
my @sum;
my @times;
for (1 .. $count) {
($sum, $times) = ($sum + $times, $sum * $times);
push @sum, $sum;
push @times, $times;
}
print "c = @sum\n";
print "d = @times\n";
输出什么:
c = 10 34 274 8434 2244274 18859318834 42320461010388274 798134711765191824044221234
d = 24 240 8160 2235840 18857074560 42320442151069440 798134711722871363033832960 33777428948505262401578369250143488058711040
它只是一个例子,也可以用一些其他的变量。 @KalanidhiM。 – swapnil90 2014-09-26 13:25:00