RFE and RFECV allow features_to_select to be larger than available features

### Describe the bug

If the `RFE` or the `RFECV` objects are initialized with a `n_features_to_select` or a `min_features_to_select` (respectively) attribute larger than the number of features present in the `X` variable that is passed to the `fit` method, I would expect an error to be raised. However a result is returned where `n_features` is equal to the number of features in `X`.

### Steps/Code to Reproduce
For the `RFE` class:
```python
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from pandas import DataFrame

X, y = make_classification(n_samples=1000, n_features=20, n_redundant=0, n_classes=2, random_state=0)

rfe = RFE(
    estimator=LogisticRegression(random_state=0),
    n_features_to_select=21,
    step=2,
)

rfe.fit(X=X, y=y)

print(rfe.n_features_)
print(rfe.ranking_)
```

For the `RFECV` class:
```python
from sklearn.feature_selection import RFECV
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from pandas import DataFrame

X, y = make_classification(n_samples=1000, n_features=20, n_redundant=0, n_classes=2, random_state=0)

rfecv = RFECV(
    estimator=LogisticRegression(random_state=0),
    min_features_to_select=21,
    cv=2,
    step=2,
    scoring="precision"
)
rfecv.fit(X=X, y=y)

print(DataFrame(rfecv.cv_results_))
```


### Expected Results

Expected that an exception is raised stating that the `n_features_to_select` or `min_features_to_select` variables cannot be greater than the number of available features. The downside is that if we raise an error we can break someone's code that was unintentionally passing a number o features larger than the available ones. So would it be best to raise a warning instead?

### Actual Results

A result is computed where `n_features` is equal to the number of features in `X`.

### Versions

```shell
System:
    python: 3.9.18 (main, Mar 17 2024, 15:49:30)  [GCC 9.4.0]
executable: /home/miguel/repos/scikit-learn/sklearn-env/bin/python
   machine: Linux-5.15.146.1-microsoft-standard-WSL2-x86_64-with-glibc2.31

Python dependencies:
      sklearn: 1.5.dev0
          pip: 23.0.1
   setuptools: 58.1.0
        numpy: 1.26.4
        scipy: 1.12.0
       Cython: 3.0.9
       pandas: 2.2.1
   matplotlib: 3.8.3
       joblib: 1.3.2
threadpoolctl: 3.3.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: openblas
    num_threads: 8
         prefix: libopenblas
       filepath: /home/miguel/repos/scikit-learn/sklearn-env/lib/python3.9/site-packages/numpy.libs/libopenblas64_p-r0-0cf96a72.3.23.dev.so
        version: 0.3.23.dev
threading_layer: pthreads
   architecture: Haswell

       user_api: blas
   internal_api: openblas
    num_threads: 8
         prefix: libopenblas
       filepath: /home/miguel/repos/scikit-learn/sklearn-env/lib/python3.9/site-packages/scipy.libs/libopenblasp-r0-23e5df77.3.21.dev.so
        version: 0.3.21.dev
threading_layer: pthreads
   architecture: Haswell

       user_api: openmp
   internal_api: openmp
    num_threads: 8
         prefix: libgomp
       filepath: /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
        version: None
```

COMMENT:
Hello @SarthakNikhal. Since you haven't said anything since yesterday is it ok if I take this issue?

Labels: Bug, module:cross_decomposition