C言語でループを使わずに1から100までの数値を出力する方法
C言語において、for文やwhile文といったループ構文を使わずに1から100までの数値を出力するには、いくつかの方法があります。代表的な手法としては、再帰関数を利用する方法、goto文を利用する方法、そしてmain()関数の外に自作関数を定義して呼び出す方法などが挙げられます。
ここでは、最もよく使われる「再帰関数」を利用した実装例を紹介します。
サンプルコード
#include<stdio.h>
int number(int val) {
if(val<=100) {
printf("%d\t",val);
number(val+1);
}
}
int main() {
int val = 1;
number(val);
return 0;
}
実行結果
12345678910111213 14151617181920212223242526 27282930313233343536373839 40414243444546474849505152 53545556575859606162636465 66676869707172737475767778 79808182838485868788899091 9293949596979899100
コードの解説
上記の例では、引数 val を受け取る number 関数を定義しています。val が100以下である間は、現在の値を出力した後、自分自身を val + 1 を引数として再帰的に呼び出します。この仕組みにより、ループ構文を使わなくても、条件が満たされなくなるまで同じ処理を繰り返すことができます。
if(val<=100) {
printf("%d\t",val);
number(val+1);
}
処理の流れ
main() 関数内では、変数 val を 1 で初期化し、number 関数を呼び出しています。最初の呼び出しで 1 が出力され、続いて number(2) が呼ばれるという流れになります。100 が出力された時点で val <= 100 の条件が偽となるため、それ以降の再帰呼び出しは行われず、プログラムが正常に終了します。
注意点
再帰呼び出しを深く行いすぎるとスタックオーバーフローを引き起こす可能性がありますが、今回のように100回程度の再帰であれば実用上問題ありません。より大きな範囲を出力する場合は、再帰の深さやコンパイラの最適化(末尾呼び出し最適化)についても考慮しておくと安心です。
-
Pythonでループを使わずに再帰関数だけで数列を出力する方法
ある数 n が与えられたとき、for 文や while 文などのループ構文を一切使わずに、n から始めて 5 ずつ減算し 0(または負の値)に達した後、今度は 5 ずつ加算しながら再び n まで戻る数列を出力する方法を紹介します。この問題は再帰関数を使うことでエレガントに解決できます。 実行例 入力: n = 15 出力: 15 10 5 0 5 10 15 アルゴリズム ステップ1: 数値 n を受け取ります。 ステップ2: n に向かって戻る途中であり、すでに n に到達していれば処理を終了します。 ステップ3: 現在、0 または負の値へ向かって減算している段階かどうかを確認します。
-
Pythonで文字列から数値を抽出する方法を徹底解説
```html Pythonでは、文字列に含まれる数値を抽出する方法がいくつかあります。ここでは、代表的な手法である isdigit() メソッドを使った例を中心に、初心者にもわかりやすく解説します。 文字列から1桁ずつ数字を抽出する 文字列内の各文字を順番に調べ、数字だけを出力する最もシンプルな方法です。isdigit() メソッドは、対象の文字が数字であれば True を返します。 >>> str1 = a34e 345 bcd 5he 78 xyz >>> for s in str1: ... if s.isdigit(): ...