プログラムの実行結果は以下の通り。
2年目の友達は 20 人,5 年後に 100 人 2 年後 : 20 人 3 年後 : 40 人 4 年後 : 60 人 5 年後 : 100 人
プログラムのソースは以下の通り。
#include "puzutl.h"
YesNo sumfriend( int s0, int s1, int s2, int n)
{
int s = s1 + s2;
if( s > 100) return NO;
if( s == 100) {
ps( "2年目の友達は %d 人,%d 年後に 100 人\n", s0, n);
// 一応検算結果を出力する。
int sum = s0;
int pre1 = 0, pre2 = s0;
for( int i=2; i<= n; i++) {
sum = pre1 + pre2;
ps( "%d 年後 : %d 人\n", i, sum);
pre1 = pre2;
pre2 = sum;
}
return YES;
}
return sumfriend( s0, s2, s, n+1);
}
int main( int argc, cstring argv[])
{
for( int i=1; i< 100; i++) {
if( sumfriend( i, 0, i, 2)) break;
}
return 0;
}